摘要:功能描述: 获取或者设置与某个套接字关联的选项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP。用法:#include #include int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen);int setsockopt(int sock.
阅读全文
随笔分类 - linux系统知识
摘要:开发环境:ubuntu10.04 tq2440第一步sqlite在arm-linux下的编译1、下载sqlite2.8.17:请到http://www.sqlite.org/download.html,将下载的代码包解开,将生成sqlite目录,另外新建一个build目录,如sqlite-arm,再在此目录下建build目录,sqlite-arm应该是和sqlite-2.8.17目录平行的同级目录注:下载的是sqlite-2.8.17.tar.gz2、确认arm-linux-toolchains.tgz已经安装到你的linux系统.3、为了在arm-linux下能正常运行sqlite,我们需要
阅读全文
摘要:去掉Ubuntu桌面硬盘图标:(1)应用程序-附件-终端-输入gconf-editor(相当于“Alt+F2“,弹出对话框输入gconf-editor,点击“运行“)(2)打开后,在窗口左侧依次点开:apps->nautilus->desktop(3)在右边的窗口中找到“volumes_visible”选项,去掉后面的勾Ubuntu窗口关闭、最小化、最大化按钮修改:PS:本人不建议修改,虽然与Windows不同,但感觉这个设计其实挺合理的,软件菜单都在左上角,为什么“关闭、最小化、最大化”这三个按钮非要放在右上角呢?而且如果像Windows一样放在了右上角,就会和Ubuntu关机按
阅读全文
摘要:涉及到很多库的依赖问题。gphoto2 : libusb, libexif, libgphotoptpcam : libusb, libptp经过一天的摸索,终于成功将ptpcam移植到了mini2440的板子上,由于还没有相机,目前还不知道是否成功。但是程序运行没问题。下面记下此次移植的过程:1.下载libptp软件包:http://sourceforge.net/projects/libptp/files/ 下载libusb-0.1.12软件包:http://sourceforge.net/projects/libusb/files/2.分别解压3.进入libusb-0.1.12,交叉编译
阅读全文
摘要:驱动开发向来是内核开发中工作量最多的一块,随着USB设备的普及,大量的USB设备的驱动开发也成为驱动开发者手头上做的最多的事情。本文主要介绍Linux平台下基于libusb的驱动开发,希望能够给从事Linux驱动开发的朋友带来些帮助,更希望能够给其他平台上的无驱设计带来些帮助。文章是我在工作中使用libusb的一些总结,难免有错误,如有不当的地方,还请指正。 Linux 平台上的usb驱动开发,主要有内核驱动的开发和基于libusb的无驱设计。对于内核驱动的大部分设备,诸如带usb接口的hid设备,linux本身已经自带了相关的驱动,我们只要操作设备文件便可以完成对设备大部分的操作,而另外一些
阅读全文
摘要:一、tasklet使用Tasklet的使用比较简单,只需要定义tasklet及其处理函数并将两者关联例子:Void my_tasklet_func(unsigned long)DECLARE_TASKLET(my_tasklet.my_tasklet_func,data)代码DECLARE_TASKLET实现了定义名称为my_tasklet的tasklet并将其与my_tasklet_func这个函数绑定,而传入这个函数的参数为data。需要调度tasklet的时候引用一个tasklet_schedule()函数就能使系统在适当的时候进行调度,如下所示Tasklet_schedule(&
阅读全文
摘要:在编写设备驱动时, tasklet 机制是一种比较常见的机制,通常用于减少中断处理的时间,将本应该是在中断服务程序中完成的任务转化成软中断完成。 为了最大程度的避免中断处理时间过长而导致中断丢失,有时候我们需要把一些在中断处理中不是非常紧急的任务放在后面执行,而让中断处理程序尽快返回。在老版本的 linux 中通常将中断处理分为 top half handler 、 bottom half handler 。利用 top half handler 处理中断必须处理的任务,而 bottom half handler 处理不是太紧急的任务。 但是 linux2.6 以后的 linux 采取了另外一
阅读全文
摘要:最近看到linux的设备驱动模型,关于Kobject、Kset等还不是很清淅。看到了struct device_driver这个结构时,想到一个问题:它的初始化函数到底在哪里调用呢?以前搞PCI驱动时用pci驱动注册函数就可以调用它,搞s3c2410驱动时只要在mach-smdk2410.c中的struct platform_device *smdk2410_devices {}中加入设备也会调用。但从来就没有想过具体的驱动注册并调用probe的过程。于是打开SourceInsight追踪了一下:从driver_register看起:int driver_register(struct dev
阅读全文
摘要:逢山开路 遇水架桥,今天想自己写个adc的驱动,发现不清楚系统各个模块的系统时钟如何使用。总不能自己想怎么弄,就怎么弄吧,还是学学框架吧——使用时钟的框架。adc_clock = clk_get(NULL, "adc"); if (!adc_clock) { printk(KERN_ERR "failed to get adc clock source\n"); return -ENOENT; } clk_use(adc_clock); clk_enable(adc_clock);上面的这段代码是touchscreen的驱动中的一段,我不清楚,所以去学学
阅读全文
摘要:linux下request_mem_region的粗略理解文章来源:http://gliethttp.cublog.cn Linux把基于I/O映射方式的I/O端口和基于内存映射方式的I/O端口资源统称为“I/O区域”(I/O Region)。I/O Region仍然是一种I/O资源,因此它仍然可以用resource结构类型来描述。 Linux是以一种倒置的树形结构来管理每一类I/O资源(如:I/O端口、外设内存、DMA和IRQ)的。每一类I/O资源都对应有一颗倒置的资源树,树中的每一个节点都是一个resource结构,而树的根结点root则描述了该类资源的整个资源空间。1.结构体 1.1&g
阅读全文
摘要:在邮件列表里讨论了一下writel是如何实现的,这个函数实现在操作系统层,有内存保护的情况下,往一个寄存器或者内存地址写一个数据。在arch/alpha/kernel/io.c中有188 void writel(u32 b, volatile void __iomem *addr)189 {190 __raw_writel(b, addr);191 mb();192 }这样一个writel函数的作用应该是向一个地址上写一个值,我想知道这个函数底下具体实现的细节,于是往下继续跟踪代码:__raw_writel(b, addr);129 void __raw_writel(u32 b, volat
阅读全文
摘要:大家都知道,在windows系统中有非常多的动态链接库(以.dll为后缀的文件,dll即dynamic link library)。这种动态链接库,和静态函数库不同,他里面的函数并不是执行程式本身的一部分,而是根据执行程式需要按需装入,同时其执行代码可在多个执行程式间共享,节省了空间,提高了效率,具有非常高的灵活性,得到越来越多程式员和用户的青睐。那么,在linux系统中有无这样的函数库呢? 答案是肯定的,linux的动态链接库不仅有,而且为数不少。在/lib目录下,就有许多以.so作后缀的文件,这就是linux系统应用的动态链接库,只不过和windows叫法不同,他叫so,即shared .
阅读全文
摘要:1 前言2 Socket编程2.1 Socket通信机制2.2 socket通信示例图2.3 Socket在不同平台上的实现2.3.1 Socket在Windows平台中的实现2.3.2 Socket在Linux/Unix平台中的实现2.3.3 可移植的启动和结束调用代码2.3.4 其它移植问题3 多线程编程3.1 线程与进程的不同3.2 线程冲突与数据保护3.3 Win32中的线程3.3.1 线程同步3.3.2 创建线程3.4 Linux/Unix中的线程3.5 可移植的线程代码4 程序实例前言Socket编程特别是多线程编程是一个很大的课题,本文针对公司最近将要实现的下载版和网页版的CPR
阅读全文