Linux
文章平均质量分 64
chn89
这个作者很懒,什么都没留下…
展开
-
宏定义中##和#的使用
在宏定义中##用于连接两部分,#用于将参数扩展成为字符串结构,也就是为变量加“”。实例:#define add(some,new) some_##new 那么add(view,pic)将被编译为view_pic #define prt(name) printf(#name)那么 prt(error)将被编译为 printf("error");程序示例: 1 #inclu原创 2011-12-19 20:17:34 · 436 阅读 · 0 评论 -
Fedora 14 升级内核版本
本人采用的fedora 14,但是正在看的内核版本是2.6.35.8,考虑到以后可能会有一些实验性修改,这里需要编译一个新的2.6.35.8的内核。操作步骤如下:1,下载所需要的内核2.6.35.82,make mrproper3,copy当前的默认配置,位于/boot/config-`uname -r` 4,make -j2 all5,make modules_i原创 2011-12-18 20:16:07 · 2022 阅读 · 0 评论 -
syslog的使用
这里面的三个函数openlog, syslog, closelog是一套系统日志写入接口。另外那个vsyslog和syslog功能一样,只是参数格式不同。 通常,syslog守护进程读取三种格式的记录消息。此守护进程在启动时读一个配置文件。一般来说,其文件名为/etc/syslog.conf,该文件决定了不同种类的消息应送向何处。例如,紧急消息可被送向系统管理员(若已登录),并在控制台上转载 2012-01-11 20:34:43 · 796 阅读 · 0 评论 -
GDB调试多线程
GDB是*nix下常用的调试工具,可以提供及其复杂的调试功能,功能十分强大。这里展示一下GDB调试多线程的常规方法。常用命令:info threads :显示当前可以调试的所有线程。thread IDx : IDx请用上述命令中的线程ID替换,该命令用于切换被调试的线程,请注意GDB只能调试一个执行序列,也就一个传统意义上的进程break file.c:20 thread all:原创 2011-12-23 22:38:40 · 4775 阅读 · 1 评论 -
GDB 调试多进程
这位IBMer提出三种调试方式,很是靠谱。http://www.ibm.com/developerworks/cn/linux/l-cn-gdbmp/。鉴于本人的嵌入式背景,多数不太适合采用VNC,于是乎,就举例说明前两种方法吧。待调试代码 1 #include 2 #include 3 4 int main(){ 5 pid_t pid; 6原创 2011-12-23 22:33:17 · 1160 阅读 · 0 评论 -
notification chains 简介
Why notification chains Notification chain 应用于Linux内核各子系统之间,有时一个子系统会关心另外一个子系统发生的事件,这时就可以注册一个关心那个时间的chain。典型例子是USB设备拔插,网络接口的使用。使用限制 1,仅用于内核的子系统之间。应用层请使用常规进程通信手段如信号量,信号,socket,共享内存,共享文件等。内原创 2011-12-13 13:34:30 · 613 阅读 · 0 评论 -
container_of宏深究
在Linux内核编程中广泛使用了container_of宏,有必要对该宏的使用及实现做一个详细的分析。1,作用原型container_of(ptr,type,member)。ptr是指向类型为type的结构体中member元素的指针,该宏最终返回类型为type的结构体的指针。举个例子, struct my_struct{ int i; int y;原创 2011-12-19 20:11:25 · 538 阅读 · 0 评论 -
再读《Linux内核设计与实现》之VFS
最近细读tcp/ip协议栈实现,遇到了文件系统的一些障碍。比如需要声明socket文件系统,以及对文件的读写最后怎么转化为socket的处理。于是再读一下VFS原理,发现,有些东西确实不用就忘了,这里在记录一下吧。VFS的作用对上层应用程序,屏蔽底层设备的不同,抽象出一个统一的操作接口。像write(fd,&buf,len)此类操作,应用层不需要关心文件实际的存储方式,存储位置。最后数原创 2011-12-18 20:17:24 · 889 阅读 · 0 评论 -
Linux下的链表使用简介
数据结构在coding中起到了非常重要的作用,重要的数据结构包括了链表,栈,队列,树等等。这里介绍一些链表在内核中的实现。我们书本上学到的链表的一般实现方式如下:struct my_link{ struct my_link *next; //next指向下一个节点 DataType data; //实际数据}这种做法是数据嵌入到链表结构中。在内核中,存在着各种各样的数据,很多都原创 2011-12-19 20:16:03 · 552 阅读 · 0 评论 -
再读《Linux内核设计与实现》之时间管理
时间管理在Linux中也是重要的组成部分PART 1 系统时间linux内核需要tick来驱动,Hz不能太大也不能太小。jiffies是一个全局时间计数变量,可以被访问。由于存在回绕的可能,故系统提供了一个回绕安全的判断宏。time_after()time_before()time_after_eq()time_before_eq()PART2 RTCRTC原创 2011-12-19 19:30:41 · 689 阅读 · 0 评论 -
Ubuntu 下访问摄像头 及将摄像头数据重定向到http协议 远程访问摄像头
本文的主要工作是ubuntu下打开摄像头,保存图片及视频,以及将视频流搬到网络上,远程访问之。两个目的,第一是手头现有树霉派,但是没有摄像头模块,所以就以笔记本来做实验,最终想法是树霉派连接摄像头模块作为一个远程网络视频监控器。第二,是安卓或者IOS装个支持视频流的播放器,就可以打开上述远程视频监控器了。原创 2013-12-01 10:56:53 · 8254 阅读 · 0 评论