- 博客(10)
- 收藏
- 关注
原创 pthread线程创建过程(未完)
1. 当我们使用pthread_create来创建线程的时候, 实际上调用的是__pthread_create_2_1 versioned_symbol (libpthread, __pthread_create_2_1, pthread_create, GLIBC_2_1); 2. 而__pthread_create_2_1里面呢, 根据传入的pthread_a
2013-06-20 00:14:47 874
原创 epoll 内核实现
1. epoll_create 1. 此系统调用分配了eventpoll数据结构, 并初始化了其中wq和poll_wq两个waiting queue 2. 创建了匿名inode节点, 此inode的file_operaitons 即eventpoll_fops仅仅提供了release, poll 两个方法2. epoll_ctl 1. 由输入的epoll_fd 得到对应
2013-07-11 22:10:16 714
原创 找到死循环线程
1. top -H, 找到占用CPU最高的线程2. gdb -p attach到进程上面3. info thread, 找到跟上面线程id对应的gdb 里面的ID4. thread $id, 锁定上面的线程5. bt 查看可疑信息。
2013-05-21 20:19:24 689
原创 信号量的处理1
1. 信号量每个task_struct里面都包含有signal_struct这个类型的指针。而signal_stuct里面又包含了struct sigpending这个结构。struct sigpending里面就是一个链表。 这里链表上面,正是挂着该进程(线程),收到的信号。2. 发送信号的过程发送信号是通过kill函数,即SYSCALL_DEFINE2(kill
2013-05-21 20:17:24 412
原创 为啥spinlock里面不能sleep
1. splin_lock在linux下面的实现,会禁止内核抢占, 代码如下: static inline void __spin_lock(spinlock_t *lock){ preempt_disable(); spin_acquire(&lock->dep_map, 0, 0, _RET_IP_);}2. 这里禁
2013-05-21 20:16:39 1471
原创 中断处理过程
1. 在entry_32.S 里面,会建立一个interrupt数组, interrupt数组,是一个函数指针数组。数组的每个元素都指向一个函数 其实呢,数组的每个元素,指向的是一段代码。 这段代码的功能为: push $0x5f //这个其实就是将中断向量号压入jmp 3fa 而3fa其实也是一个跳转,跳转到由common_in
2013-05-21 20:15:27 807
原创 Fuse 学习
1. enable debug a. 修改 lib/Makefile, 添加 -O0, -g2 在 CC后面 b. root@ub1:/home/shawn/src/fuse-2.9.0/example# gcc -g2 -O0 -Wall -c hello.c -o hello.o -D_FILE_OFFSET_BITS=64 c. root@ub1:/home/s
2013-05-21 20:14:29 815
原创 准备把evernote里面的东西转出来了
准备把evernote里面的东西转出来了。其中copy(引用)了很多别人的东西, 如果版权,归他们所有。欢迎转载。
2013-05-21 20:10:38 616
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人