2014年(34)
发布时间:2014-10-12 17:37:39
1、软中断由内核线程ksoftirqd处理,下面说一下它的创建过程。start_kernel()创建init线程,init()调用do_pre_smp_initcalls()->spawn_ksoftirqd(),spawn_ksoftirqd()分两次调用cpu_callback(),分别使用参数CPU_UP_PREPARE和CPU_ONLINE。使用CPU_UP_PREPARE调用cpu_callback()时,创建了ksoftirqd线程,并把task_struct指针存于per_cpu变量per_cpu(ksoftirqd, hotcpu)中;使用CPU_ONLINE调......【阅读全文】
发布时间:2014-10-12 11:22:18
有些时候我们很难知道问题出在哪里,特别是类的析构,以及一些函数(调用这个函数的地方很多并且很频繁,不确定调用这个函数的堆栈)的调用,当我们去查找相应功能的代码问题时,如果简单的通过断点不好查找,就可以使用这个办法。所以我们使用gcc的编译特性使用__builtin_return_address(level)打印出一个函数的堆栈.........【阅读全文】
发布时间:2014-05-16 12:02:24
操作系统:ubuntu10.04前言: 在通信过程中,无法知道将会接收到的数据的长度,因此开一个固定大小的缓冲区并不合适,开大了,很可能大多数通信都只是几十个自己而已;开小了,又无法处理大数据。因此最好的方法就是创建内存池,根据实际情况,分配合适大小的内存空间。一,思路二,实现三.........【阅读全文】
发布时间:2014-05-15 23:46:09
在linux的daemon服务中,往往需要通知daemon重启或者reload其配置文件。使用alarm来进行延时重启或者reload,减少大批量的配置修改造成的无意义的重启或reload。......【阅读全文】