自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(17)
  • 资源 (1)
  • 收藏
  • 关注

原创 PCI MSI MSI-X学习笔记

MSI 出现于PCI2.2中, PCI 3.0中允许针对每个中断设置掩码 MSI-X出现于PCI3.0中,相对MSI,每个设备允许有更多的中断,每个中断都可以独立配置   基本功能 设备通过向某个特定的地址写入来引发中断   与传统基于pin的PCI中断相比较: 1.传统PCI中断需要在设备之间共享, MSI MSI-X不需要共享 2.传统PCI中断会在设备将数据写入内存之前引发

2013-08-21 21:24:07 2212

原创 linux-3.4.58 UIO笔记

UIO初始化   static int uio_major_init(void) {  static const char name[] = "uio";  struct cdev *cdev = NULL;  dev_t uio_dev = 0;  int result; 系统分配主设备号和次设备号  result = alloc_chrdev_region(&uio_dev,

2013-08-18 11:58:03 725

原创 USB hub 分析

HUB的驱动注册 static int __init usb_init(void)中调用 retval = usb_hub_init(); int usb_hub_init(void) { 向USB总线注册HUB的驱动程序  if (usb_register(&hub_driver)   printk(KERN_ERR "%s: can't register hub driver\n

2013-08-18 10:46:26 748

原创 USB uhci主机控制器初始化分析

PCI检测到USB主机控制器后会进行驱动的匹配 usb_hcd_pci_probe函数进行设备与驱动的匹配,并执行初始化动作 创建USB_HCD结构  hcd = usb_create_hcd(driver, &dev->dev, pci_name(dev));  if (!hcd) {   retval = -ENOMEM;   goto disable_pci;  }  if

2013-08-18 10:45:35 1030

原创 二级指针操作链表的小技巧

内核中register_filesystem函数    struct file_system_type ** p;    p = find_filesystem(fs->name, strlen(fs->name)); 返回的是最后一个节点的next指针的地址  if (*p)                                *p存在说明不是最后一个节点。   res

2013-01-29 15:20:09 472

原创 LINUX 2.6.37内存管理 SLAB分析之(3)SLAB对象分配与释放

static int cache_grow(struct kmem_cache *cachep,         gfp_t flags, int nodeid, void *objp) 当SLAB不够时用于分配新的SLAB。     offset = l3->colour_next;     l3->colour_next++;     if (l3->colour_next >= c

2013-01-28 10:56:58 5154

原创 LINUX 2.6.37内存管理 SLAB分析之(2)SLAB缓冲创建与销毁

创建: kmem_cache_create函数:     if (!name || in_interrupt() || (size         size > KMALLOC_MAX_SIZE) {         printk(KERN_ERR "%s: Early error in slab %s\n", __func__,                 name);

2013-01-28 10:56:18 443

原创 LINUX 2.6.37内存管理 SLAB分析之(1)SLAB初始化

入口函数:kmem_cache_init, SLOB,SLUB均有提供相同函数名的函数作为初始化入口。     for (i = 0; i         kmem_list3_init(&initkmem_list3[i]);         if (i             cache_cache.nodelists[i] = NULL;     }     根据内存结点的数

2013-01-28 10:55:35 558

原创 GCC文档中比较大小的宏定义

#define max(a,b) ((a) > (b) ? (a) : (b)) But this definition computes either a or b twice, with bad results if the operand has side effects. In GNU C, if you know the type of the operands (here take

2013-01-28 10:36:44 898

原创 元字符

下表是元字符及其在正则表达式上下文中的行为的一个完整列表:         字符   描述       \   将下一个字符标记为一个特殊字符、或一个原义字符、或一个   向后引用、或一个八进制转义符。例如,'n'   匹配字符   "n"。'\n'   匹配一个换行符。序列   '\\'   匹配   "\"   而   "\("   则匹配   "("。       ^

2013-01-28 10:35:41 413

原创 sed 实现cat -n

#!/usr/bin/sed -nf           # Prime the pump on the first line   pattern space中读入一行      x   首先是交换指令,将hold space和pattern space的内容互换      /^$/ s/^.*$/1/      判断pattern space是否为空,如果刚开始运行则前面hold

2013-01-28 10:34:39 488

原创 sed center line

#!/usr/bin/sed -f           # Put 80 spaces in the buffer      1 {        x        s/^$/          /        s/^.*$/&&&&&&&&/        x      }      1为地址,如果是第一行,则在hold space中保存80个空格      # del

2013-01-28 10:33:17 314

原创 C++ specialization.txt

explicit specialization 也称显式特化,全特化,显式具体化 使用明确的类型来代替模板中的类型参数 函数: 函数在全局则可以全特化,在普通类(非模板类)内部则不能, 例如 template T abc(T &a, U& b) {     std::cout     return a; } template char abc(char &a, int &b)

2013-01-28 10:30:19 331

原创 ELF动态链接

ELF动态链接 一.链接器ld-linux.so.2 链接器在.interp section中 动态库运行时查找动态库的顺序: 1 (ELF only).dynamic 中的RPATH,  编译时使用 -Wl,-rpath=指定,例如-Wl,-rpath=. 程序执行时会在当前目录下寻找动态库。 -Wl,-rpath=支持环境变量,如export MYDIR=/mnt; -Wl,-rp

2013-01-28 10:29:27 363

原创 C++ 对象内存分布

objdump -t test 64位系统上的输出 .text     00000000004006c0 l    d  .text          0000000000000000              .text    代码段。 .rodata   0000000000400b40 l    d  .rodata        0000000000000000

2013-01-28 10:28:40 471

原创 3.2-module分析

/* This is where the real work happens */ SYSCALL_DEFINE3(init_module, void __user *, umod,   unsigned long, len, const char __user *, uargs) {  struct module *mod;  int ret = 0;  /* Must have p

2013-01-28 10:27:49 525

原创 Infecting loadable kernel modules 笔记

phrack 68期 Infecting loadable kernel modules 笔记 源文章:http://www.phrack.org/issues.html?issue=68&id=11#article 一。ELF文件格式与内核模块链接机制 1.对于内核模块来说,主要包括了ELF格式中的三个部分(按文件中的存储顺序):ELF header, sections, sectio

2013-01-28 10:26:19 631

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除