<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 303  文章 - 883  trackbacks - 0
    <2007年4月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    歡迎光臨! 
    閑聊 QQ:1074961813

    隨筆分類(357)

    我管理的群

    公共blog

    • n維空間
    • Email : java3d@126.com 群 : 12999758

    參與管理的論壇

    好友的blog

    我的其他blog

    朋友的網(wǎng)站

    搜索

    •  

    最新評論

            這幾天做 C socket 有個(gè)朋友遇到問題,答應(yīng)幫忙解決的,于是上網(wǎng)
    找找相關(guān)資料,可惜實(shí)在是難找,郁悶上圖書館翻翻書,發(fā)現(xiàn)一本叫
    《linux內(nèi)核分析及編程》--倪繼利 的書講到了,呵呵happy;借回來looklook;
    順便把要用到的內(nèi)容打出來發(fā)個(gè)文章,有需要的朋友可以看看;改資料雖然
    簡短,但我想會(huì)很有用;linux 下的C編程系統(tǒng)源碼有著密切的關(guān)系,我想這
    是編程的難度所在本來寒假是想學(xué)點(diǎn)C的,不知道這么搞的搞到j(luò)ava那里去了
    看來還是要花點(diǎn)時(shí)間學(xué)學(xué)C了,不然就完了;
    呵呵,全是廢話來的,看資料吧!



    linux下用C實(shí)現(xiàn)緩存分配和使用


    kmem_cache_create 函數(shù)是給一個(gè)對象空間分配一個(gè)緩沖區(qū),下面是它的例子(在kernel/fork.c中)


    void _init proc_caches_init(void){
     
     vm_area_cachep 
    = kmem_cache_create(
                 
    "vm_area_struct",
                 
    sizeof(vm_area_struct),
                 SLAB_PANIC,NULL,NULL
                   );
     
     }


    kmem_cache_alloc 是從指定的緩沖區(qū)中分配一個(gè)對象,它的例子如下:


    static inline int dup_mmap(struct mm_struct * mm,struct mm_struct *oldmm){
    struct vm_area_struct *mpnt,*tmp,**pprev;
    .
       tmp 
    = kmem_cache_alloc(vm_area_cachep,
                             SLAB_KERNAEL
                           );
    .
    }


    kmalloc 函數(shù)是分析一個(gè)大小為 size 的內(nèi)存塊,下面是一個(gè)應(yīng)用例子(在kernel/power/pm.c)



    struct pm_dev *pm_register(pm_dev_t type,
                      unsigned 
    long id,
                      pm_callback callback   
                      )
    {
        
    //GEP_KERNEL表示正在運(yùn)行的內(nèi)核態(tài)的進(jìn)程分配空間,可以陷入睡眠
    struct pm_dev *dev = kmalloc (sizeof(struct pm_pev),GFP_KERNEL);
    ..
    }


    vmalloc 函數(shù)分配一段連續(xù)的 size 大小的虛擬內(nèi)存,其對應(yīng)物理頁可不連續(xù)。下面是一個(gè)應(yīng)用例
    子(在security/selinux/ss/avtab.c中):



    int avtab_init(struct avtab *h)
        
    {
          ..
          h
    ->htable = vmalloc(sizeof(*(h->htable))*AVTAB_SIZE);
          ..
           }





    地震讓大伙知道:居安思危,才是生存之道。
    posted on 2007-04-07 22:53 小尋 閱讀(908) 評論(0)  編輯  收藏 所屬分類: unix program
    主站蜘蛛池模板: 亚洲高清毛片一区二区| 免费黄色小视频网站| 黄页网站在线观看免费| 亚洲网站在线免费观看| 国产gv天堂亚洲国产gv刚刚碰| 无码视频免费一区二三区| 久久久免费精品re6| 国产免费区在线观看十分钟| 亚洲老熟女五十路老熟女bbw | 亚洲熟妇色自偷自拍另类| 伊人亚洲综合青草青草久热| 国产一级做a爱免费视频| 免费国产黄线在线观看| www视频在线观看免费| 99视频有精品视频免费观看| 97在线视频免费公开视频| 成人午夜影视全部免费看| 久久精品国产亚洲AV未满十八| ww亚洲ww在线观看国产| 亚洲精品国产成人| 亚洲国产精品第一区二区| 精品国产亚洲一区二区三区| 亚洲乱码日产精品a级毛片久久| 国产在线播放免费| 国产美女无遮挡免费视频| 成人av免费电影| 性一交一乱一视频免费看| 色www永久免费视频| 精品国产免费一区二区| 国产免费黄色大片| 四虎影库久免费视频| 免费国产成人高清在线观看麻豆| 国产高清免费的视频| 国产一精品一aⅴ一免费| 免费国产在线观看| 亚洲黄片毛片在线观看| 久久亚洲AV永久无码精品| 亚洲午夜久久久久久久久久| 国产精品久久久亚洲| 亚洲四虎永久在线播放| 亚洲国产一区在线观看|