2015-02-06 - 在Unix主机上产生僵尸进程是比较头痛的,因为僵尸进程是非常顽固的,用kill是没有用的,因为它已经死了,要不怎么叫僵尸呢? 如果僵尸进程由某个父进程产生,而父进程尚未退出,则僵尸进程会一直存在,用ps ef | grep查一下,看看PPID是谁,父进程退出时一般...
2015-02-06 - 其他程序可以调用void daemon_init(const char * cmd)方法,来初始化当前进程为守候进程 #includestdio.h #includeunistd.h #includesys/resource.h #includefcntl.h #includesignal.h #includesyslog.h void daemon_init(const char * cmd); int main(int a...
2015-02-06 - mmap系统调用是的可以在用户空间直接访问设备内存,它是通过映射来完成的,但是要强调的是: 1.mmap系统调用是对文件进行操作的,那么文件自然有其对应的file_operation结构,而其中有一个 int (*mmap)(struct file *,struct vm_area_struct *),所以系统调...
2015-02-06 - 一、udev 在2.6内核里,使用了udev来取代hotplug。据udev的作者Greg K.H说,之所以废弃了hotplug原因是sysfs的出现,这个东西会产生非常多的hotplug事件,远远超过了2.4的内核(只要实现了了kobject模型的设备驱动都回产生该事件)。所以hotplug变得复杂,而...
2015-02-06 - 1.Linux内核给一个进程发送信号就在该进程控制结构体对应域设置该信号的位,如果该进程在可中断睡眠则唤醒否则不唤醒该进程。 2.进程检查处理该信号的时机是:即将从内核态返回用户态(系统调用返回)。 3.执行信号的处理函数方法是:内核在用户栈创建一个新...
2015-02-06 - 接上一篇《Linux下利用条件变量实现读写锁》,继续讨论如何利用pthread_cond_t来实现sem_t。目前的Linux内核都支持信号量sem_t,但也有一些老的OS,如AIX4,和早期的Solaris并不支持信号量,毕竟semaphore这个东东并没有包括在POSIX标准里。这种情况下有必要...
2015-02-06 - 首先介绍下pthread_cond_t。在Linux下称之为状态变量,与之相关的有下面几个API: int pthread_cond_init (pthread_cond_t *COND,pthread_condattr_t *cond_ATTR); int pthread_cond_signal (pthread_cond_t *COND); int pthread_cond_broadcast (pthread_con...
2015-02-06 - 可以用readline库 安装readline 在eclipse中编译使用readline需要在连接时加上-Ireadline -Itermcap #include stdio.h #include stdlib.h #include readline/readline.h #include readline/history.h static char *line_read = (char *) NULL; char *rl_gets...
2015-02-06 - 1. scp同步文件脚本 //syntest.sh #!/bin/bash # Setting cdm path is used to store client software host_dir=/var/hostdir # Statement the file is used to store the size of cdm folder size fsrecord=.r # To synchronize the target machine ip clie...
2015-02-05 - 一、环境搭建、配置,Virtualbox安装,ctags安装,常用命令的使用,log函数使用: Android2.3源码已经获取 1、选择合适java虚拟机 列出当前java-vm所有版本,任何路径下输入命令,该命令无法联想: # eselect java-vm list 如果显示如下: Available Java Vi...
2015-02-05 - Shell是Linux中重要的一个层次,它是用户与系统交互作用的界面,除了作为命令解释程序外,还是一种高级的编程序设计语言,可以设计出功强强代码简单的程序。Shell程序相当于DOS中的 批处理文件。Linux中最常用的Shell命令是bash。 1)创建shell程序:vi file...
2015-02-05 - 1、strace 这个功能很强大,能够看到很多底层调用,便于分析问题 举例: [wangbin@localhost pas]$ strace -p 10472 Process 10472 attached - interrupt to quit futex(0x4113be8, FUTEX_WAIT, 10482, NULL unfinished ... Process 10472 detached 我们可以...
2015-02-05 - Linux操作系统为每一个进程提供了3个内部计时器。 ITIMER_REAL;ITIMER_VIRTUAL;ITIMER_PROF. ITIMER_REAL:给定一个指定的时间间隔,按照实际的时间来减少这个计数,当时间间隔为0的时候发出SIGALRM信号。 ITIMER_VIRTUAL:给定一个时间间隔,当进程执行的时候...
2015-02-05 - 很多时候因为种种原因,需要把 java 程序单独执行,而不是在web容器环境下执行,这时候很多容器资源是无法直接取到的 比如数据库连接池配置的数据源等等,还有就是程序运行需要的第三方jar包。 这种情况下需要设置环境变量,比如java路径,classpath环境变量...
2015-02-05 - 在Linux的schedule中,首先调用sched_find_first_bit(array-bitmap)发现优先级queue,通常运行队列array-bitmap的相应位在enqueue_task时被设置,在dequeue_task时被清除,然后选择该运行队列的优先级queue的next(即该queue的第一个)。当next被选择以后,...
2015-02-05 - move_tasks()在几个地方调用: 1. load_balance() 2. migrate_thread()---migration_thread load balance在每个时钟节拍由 scheduler_tick()---rebalance_tick()调用。 rebalance_tick开始在所有调度域上循环,其路径是从基本域(本地运行队列的sd字段)到最...
2015-02-04 - 当你在程序中使用fork(),如果用gdb来调试.不管是你在子进程是否设置断点.你都只能在父进程单步调试,而没办法进入到子进程当中进行单步调试.因为gdb的所有处理(查看堆栈,内存,变量值)都是针对当前进程空间. 那么是否就没办法调试多进程程序的子进程代码呢?办...
2015-02-04 - 一、字符串条件判断 简单表达式 解释 实例 Left=${right} Left= 变量right 的值, 与$right 相同 right=a;left=${right};echo ${left} a Left=${right- DEFAULTSTRING} 如果right 没有被声明 , 那么就以$DEFAULTSTRING 作为left 的值,否则left=$right left=$...
2015-02-04 - Steven Yang Email: defeattroy at gmail.com 系统的USB设备信息通过usbfs挂载在/proc/bus/usb下面,此目录下面有两种文件/proc/bus/usb/devices和/proc/bus/usb/BBB/DDD。 /proc/bus/usb/BBB/DDD文件 每一个连接的USB设备都有一个文件,BBB指示bus number,...
2015-02-04 - 概要 (i) 设置某用户的上网代理 (ii) 设置特定用户程序的上网代理:wget 设置代理 、yum 设置代理 主要内容 (一) 设置某用户的上网代理 (1) 在能连接外网的老节点 10.10.11.251 上启动 CCProxy, 设置一个 HTTP 协议端口,例如为 9527; 在账户中添加客户机A...
2015-02-04 - 下面五个步骤实现在Linux下生成自己的静态库文件: (1) 编写库文件testlib.c #include void a() { printf(zyx\n); } (2)编写一个头文件用于声明我们使用的函数testlib.h void a(); (3) 编译testlib.c gcc -c testlib.c (4) 用ar创建一个归档文件 ar crv li...
2015-02-04 - 在移植linux到龙芯3210的过程中,调试串口的时候,遇到了一个outb函数,却找不到这个函数的原型。当时是用VIM的跳转功能来看的代码。直接用grep工具也找不到这个函数。后问人才发现其实outb实则上是一个宏函数,而这宏函数的写法还真是少见,可能是见识少了...
2015-02-04 - 在移植linux2.6.18.1到龙芯3210的时候,也就是在移植笔记3里,对Cache和TLB进行了一段修改,移植的时候以对照的方式进行修改,现在来看看,为什么代码这样写。 在移植Linux到龙芯3210笔记3里面已经知道,对Cache和TLB的操作是在trap_init里完成的,查了一下t...
2015-02-04 - 这两天,因为项目的需要研究了一把如何利用Linux syslog写日记,这里简单整理一下。本人使用的系统是RHEL 5.5。 System Logging Linux日记系统由系统日志监控程序syslogd和内核日志监控程序klogd组成。从它们的命名可以看到,这两个监控程序都是守护程序(da...
2015-02-04 - Linux 2.6.11版本的内核软中断线程ksoftirqd代码如下,下面框架可以看出对于,吞吐量与处理延迟两者之间的权衡。 软中断线程处理概括: 1、如果没有活干(没有软中断等待处理)就 schedule()切出,并从运行队列里面删除(由于任务状态已经变成TASK_INTERRUPTIBLE...
2015-02-04 - asmlinkage void schedule(void) { task_t *prev, *next; runqueue_t *rq; prio_array_t *array; struct list_head *queue; int idx; #判断是否调度发生在中断上下文,如果是就出错;在Linux的中断中是不允许发生调度的 if (unlikely(in_interrupt())) BUG();...
2015-02-04 - Windows下的调用约定可以是stdcall/cdecl/fastcall,这些标识加在函数名前面,如: int __stdcall funca() 但在Linux下,如按照上面写法后,编译程序将导致编译错误,Linux下正确的语法如下: int __attribute__((__stdcall__)) funca() int __attribute__((...
2015-02-04 - 1. Epoll 是何方神圣? Epoll 可是当前在 Linux 下开发大规模并发网络程序的热门人选, Epoll 在 Linux2.6 内核中正式引入,和 select 相似,其实都 I/O 多路复用技术而已 ,并没有什么神秘的。 其实在 Linux 下设计并发网络程序,向来不缺少方法,比如典型...
2015-02-03 - 随着Linux2.6的发布,由于2.6内核做了较大的改动,各个设备的驱动程序在不同程度上要进行改写。为了方便各位Linux 爱好者我把自己整理的这分文档share出来。该文当列举了2.6内核同以前版本的绝大多数变化,可惜的是由于时间和精力有限没有详细列出各个函数的...
2015-02-03 - 函数原型: #include sys/stat.h int mkdir(const char *path, mode_t mode); 参数: path是目录名 mode是目录权限 返回值: 返回0 表示成功, 返回 -1表示错误,并且会设置errno值。 mode模式位: mode 表示新目录的权限,可以取以下值: S_IRUSR S_IREAD S...
2015-02-03 - 从Linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一点,udev是应用层的东东,不要试图在内核的配置选项里找到它,而在Android系统中没有udev,但是udev的功能在androidsrc/system/core/...
2015-02-03 - 分析一个内核模块。我后面就选了LED模块分析,LED模块分析不算难,但要说清楚其实还是很挑战的。今天俺的文章被推荐到首页了。挺有成就感的。我的文章虽然不登大雅之堂,但只要能给到大家一起指点,哪怕就一点点我就心满意足了。好了,闲话不多说了,开始我...
2015-02-03 - 交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台(X86 CPU)上编译出能运行在以ARM为内核的CPU平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到ARM CPU平台上才能运行。 首先建立交叉编...
2015-02-03 - Linux内核的双向链表是比较经典的东西,网上分析链表的同志基本分析了99%,就差了1%。那就是list_del函数。 先给出函数原型: #ifdef CONFIG_ILLEGAL_POINTER_VALUE # define POISON_POINTER_DELTA _AC(CONFIG_ILLEGAL_POINTER_VALUE, UL) #else # define PO...
2015-02-03 - 一.数据结构设计 0. 需要被管理的实体实际上很杂,包括设备,驱动,总线,类型,块设备,电源等等...迫切需要统一管理。 1. kobject代表每一个被管理实体,很显然的,这些实体可以带有一个或者多个属性。 2. 这些属性由attribute表示,由于被管理的实体不同...
2015-02-03 - 总论: linux的文件系统设计非常优秀,总的来讲有两大部分,第一部分就是树形的组织结构,第二部分就是vfs,树形的组织结构组织了文件系统的表象,用户很方便的使用,而vfs是文件系统的实现机理,它处于内核态,不但实现了树形结构的mount机制,而且还提供了...
2015-02-02 - 遇到内核panic,我们很无奈,我们总是以为内核自动的检查出了错误,然后panic了,可事实上,panic是一个函数,需要显式调用的,panic机制固然是一种检查内核正常的好机制,可是其背后隐藏了大量内核开发者的心血,内核开发者必须知道什么情况下内核属于不正...
2015-01-30 - Linux下UTF 32和UTF 16互相转换代码: #define DECLARE_WCS2UTF16CONV int _len; (_len); wchar_t * _wcs; (_wcs); unsigned short * _utf16; (_utf16) #define WCS2UTF16(wcs) \ (((_wcs = wcs) == NULL) ? NULL : (\ _len = (utf16len(_wcs)+1),\ wcs2utf1...
2015-01-30 - 一. 实验目的 1.掌握Linux创建进程。 2.掌握Linux父子进程同步。 3.掌握Linux子进程的重新加载。 4.进一步熟悉linux下vi的使用和C源程序的编译与运行。 二. 实验准备 1. 创建子进程函数: fork() 说明:返回值 0 创建成功,从子进程返回 0创建成功,从...
2015-01-29 - Linux下增量备份程序的命令形式: 1.可执行文件 源文件 as:./a sourcefile 2. 更新备份的时间:usage as:1979-01-01 10:20 : 1979 01 01 10 20 3.输入增量备份的目文件: #获取文件的更新时间 function gettime(){ var=`ls -l $1| grep :[0-9]\{2,\} 1 | se...