上一页 1 ··· 5 6 7 8 9 10 11 下一页
摘要: a、Q&AQ:为什么编出来的应用肯定是在用户地址空间运行,而内核编出来的代码却一定是运行在内核空间?A:链接器(Linker):目的是描述输入文件的sections是如何映射到输出文件中,并控制输出文件的内存排列。而且ld就是使用这个缺省的script内置在链接器中。b、链接脚本具体实践链接脚本中无论是输出文件还是输入文件,主要数据是文件中的各种段,把输入文件中的段称为输入段(Input Sections),输出文件中的段称为 输出段(Output Sections)。一般链接脚本名都以lds作为扩展名,ld scriptld script语法:1.语句之间使用分号";&qu 阅读全文
posted @ 2012-01-04 21:47 yarpee 阅读(793) 评论(0) 推荐(0) 编辑
摘要: watchdog是一种以NMI方式检查CPU死锁的机制上下文:进程上下文、中断上下文http://www.docin.com/p-251729682.html同一时刻,一个Tasklet或Timer不会同时在两个CPU上执行http://hi.baidu.com/greatren518/blog/item/27f7351033d349ffc2ce7925.htmlspin_lock_irqsave()是最通用和最强大的加锁函数。RCUhttp://www.ibm.com/developerworks/cn/linux/l-rcu/http://hi.baidu.com/xiangjunzhao 阅读全文
posted @ 2011-12-30 18:01 yarpee 阅读(164) 评论(0) 推荐(0) 编辑
摘要: ld学习实例:linux 下仅导出指定函数的方法:转自http://www.whitecell.org/forums/viewthread.php?tid=741linux 也有导出文件。不用特定的扩展名,且不是在 gcc 中指定参数,而是在 ld 中。 写一个导出符号文件,如 symbol 指定你只导出的函数,如 func1。使用 ld 的 --retain-symbols-file参数可以在 static section 里取消 func1 以外的所有函数。这 时你用 readelf 看编译好后的 .so 文件 static section 里没有了,使用 nm 看 .so 文件它无法查出 阅读全文
posted @ 2011-12-29 21:44 yarpee 阅读(414) 评论(0) 推荐(0) 编辑
摘要: 1.adore实现文件隐藏getdents64()系统调用修改VFS来达到隐藏目的getdents64——>sys_getdents64——>vfs_readdir——>file->f_op->readdiropen——>sys_open——>filp_open——>dentry_open——>f->f_op=fops_get(inode->i_fop)最后是把inode中的file_operations函数集赋值给file中的file_operations函数集open当前目录文件,返回一个文件句柄,改句柄对应到内核中就是一个 阅读全文
posted @ 2011-12-29 18:27 yarpee 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 1.module结构struct module{enum module_state state; /* 模块的内部状态 */struct list_head list; /* 模块链表指针 */char name[MODULE_NAME_LEN]; /* 模块名,60字节 */struct module_kobject mkobj; /* 包含一个kobject结构 */struct module_attribute *modinfo_attrs; const char *version; const char *srcversion;struct kobject *holders_dir;c 阅读全文
posted @ 2011-12-28 17:23 yarpee 阅读(496) 评论(0) 推荐(0) 编辑
摘要: 一串bit流中统计1的个数同事说了个方法很不错,学习了。#pragma once#include<iostream>typedef unsigned char byte;#define NEW_LINE "\r\n";const static int bitMapSize=256;byte bitMap[bitMapSize];void InitBitMap(void){bitMap[0]=0; //初始化第一个表值 0000 0000int nowBitStart=0,nowStart=1,nowLength=2;//根据第一个表值生成后面的所有表值for(; 阅读全文
posted @ 2011-12-26 18:20 yarpee 阅读(604) 评论(0) 推荐(0) 编辑
摘要: modutils:http://www.kernel.org/pub/linux/utils/kernel/modutils/v2.4/http://mp.tongji.edu.cn/cgi-bin/topic.cgi?forum=6&topic=10 tongji论坛如果user不是root的话,lsmod只是将/proc/modules里的内容显示出来如果user是root的话,通过sys_query_module获取模块信息几个和module相关的系统调用sys_create_modulesys_init_modulesys_query_modulesys_delete_modu 阅读全文
posted @ 2011-12-25 23:51 yarpee 阅读(251) 评论(0) 推荐(0) 编辑
摘要: TASK_KILLABLE对不可中断睡眠模式的进程的唤醒呼叫可能会由于某些原因不会发生,这会使进程无法被终止,从而最终引发问题,因为惟一的解决方法 就是重启系统。一方面,您需要考虑一些细节,因为不这样做会在内核端和用户端引入 bug。另一方面,您可能会生成永远不会停止的进 程(被阻塞且无法终止的进程)。为此引入了TASK_KILLABLE状态#define TASK_KILLABLE (TASK_WAKEKILL | TASK_UNINTERRUPTIBLE)参考链接:http://www.ibm.com/developerworks/cn/linux/l-task-killable/ 阅读全文
posted @ 2011-12-25 14:46 yarpee 阅读(201) 评论(0) 推荐(0) 编辑
摘要: Tim所著文章http://www.ibm.com/developerworks/cn/linux/l-lkm/index.htmlLinux 可加载内核模块剖析insmod-->init_module-->sys_init_modulermmod-->delete_module-->sys_delete_module在模块的加载和卸载期间,模块子系统维护了一组简单的状态变量,用于表示模块的操作。加载模块时,状态为 MODULE_STATE_COMING。 如果模块已经加载并且可用,状态为 MODULE_STATE_LIVE。此外,卸载模块时,状态为 MODULE_ST 阅读全文
posted @ 2011-12-25 12:09 yarpee 阅读(185) 评论(0) 推荐(0) 编辑
摘要: __asm__ __volatile__("": : :"memory")memory强制gcc编译器假设RAM所有内存单元均被汇编指令修改,这样cpu中的registers和cache中已缓存的内存单元中的数据将作废。cpu将不得不在需要的时候重新读取内存中的数据。这就阻止了cpu又将registers,cache中的数据用于去优化指令,而避免去访问内存。这里就是跟gcc说已经更改了你存了详细请参看:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1978940http://gcc.g 阅读全文
posted @ 2011-12-24 12:15 yarpee 阅读(454) 评论(0) 推荐(0) 编辑
摘要: CFS相关链接:http://www.ibm.com/developerworks/cn/linux/l-cfs/index.htmlhttp://blog.chinaunix.net/space.php?uid=20940095&do=blog&id=66041http://blog.chinaunix.net/space.php?uid=20940095&do=blog&id=66042http://blog.chinaunix.net/space.php?uid=20543183&do=blog&id=1930842http://wenku 阅读全文
posted @ 2011-12-23 21:09 yarpee 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 32位的进程描述符都是task_struct类型结构,它的域包含了与一个进程相关的所有信息。其中包含指向tty_struct、fs_struct、files_struct、mm_struct、signal_struct等在Linux中,任务(task)和进程(process)是两个相同的术语,task_struct其实就是通常所说的"进程控制块"即PCB。进程的状态:可运行状态(TASK_RUNNING)、可中断的等待状态(TASK_INTERRUPTIBLE)、不可中断的等待状态(TASK_UNINTERRUPTIBLE)、暂停状态(TASK_STOPPED)、僵死状态( 阅读全文
posted @ 2011-12-23 17:42 yarpee 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 进程劫持:http://blog.chinaunix.net/space.php?uid=18757596&do=blog&id=1744672unsigned long *getscTable(){ unsigned char idtr[6],*shell,*sort; struct _idt *idt; unsigned long system_call,sct; unsigned short offset_low,offset_high; char *p; int i; /* get the... 阅读全文
posted @ 2011-12-23 17:39 yarpee 阅读(845) 评论(0) 推荐(0) 编辑
摘要: make的时候发现出现Makefile:8: *** missing separator. Stop.在http://gcc.gnu.org/ml/gcc/2001-02/msg00635.html这里看到了解决方法,实际上也很简单,就是必须要有一个tab>I tried to write the easy makefile>8: gcc -o test DBcomplx.o>When I call the make command I'got always the error message>>makefile:8: *** missing separa 阅读全文
posted @ 2011-12-23 15:52 yarpee 阅读(484) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/bresponse/article/details/6905904http://blog.csdn.net/bresponse/article/details/6905933平衡二叉树(Balanced Binary Tree):它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一颗平衡二叉树。红黑树,能保证在最坏情况下,基本的动态几何操作的时间均为O(lgn).红黑树上每个结点内含五个域,color,key,left,right,p。如果相应的指针域没有,则设为NIL。一般的,红黑树,满足以下性质,即只有满足以下全部性质的树 阅读全文
posted @ 2011-12-23 14:48 yarpee 阅读(350) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 下一页