当前位置:  技术问答>linux和unix

求解linux源码中的这段SCTP程序

    来源: 互联网  发布时间:2016-08-10

    本文导语:  status = -ENOBUFS; sctp_bucket_cachep = kmem_cache_create("sctp_bind_bucket",        sizeof(struct sctp_bind_bucket),        0, SLAB_HWCACHE_ALIGN,        NULL); if (!sctp_bucket_cachep) goto out; net/sctp/protocol.c的1071行 此后除了kmem_cac...


status = -ENOBUFS;
sctp_bucket_cachep = kmem_cache_create("sctp_bind_bucket",
       sizeof(struct sctp_bind_bucket),
       0, SLAB_HWCACHE_ALIGN,
       NULL);
if (!sctp_bucket_cachep)
goto out;

net/sctp/protocol.c的1071行
此后除了kmem_cache_destroy函数外,sctp_bucket_cachep貌似再也没出现过,那这几句代码是干什么用的呢?

|
这段代码创建了一个cache
一个在内核中经常被申请和释放的结构体,容易造成碎片和效率低下
通过使用slab分配器,一次先申请一大片内存当cache,专门供一种结构体来申请使用,
于是申请特定结构体的时候可以直接非配成功,释放这个特定结构体不是真的释放,而是提供给下一个申请者
这样可以很好地解决碎片和效率

 sctp_bucket_cachep = kmem_cache_create("sctp_bind_bucket",
                           sizeof(struct sctp_bind_bucket),
                           0, SLAB_HWCACHE_ALIGN,
                           NULL);
"sctp_bind_bucket"是此cache在/proc/slabinfo中显示的名字
sizeof(struct sctp_bind_bucket),说明此cache是专供struct sctp_bind_bucket使用的

虽然在/net/sctp/protocol.c里没有怎么使用它,
但是在/net/sctp/socket.c 里
extern struct kmem_cache *sctp_bucket_cachep;

 static struct sctp_bind_bucket *sctp_bucket_create(
        struct sctp_bind_hashbucket *head, unsigned short snum)
{
struct sctp_bind_bucket *pp;

pp = kmem_cache_alloc(sctp_bucket_cachep, GFP_ATOMIC);
}
就使用了这片cache

    
 
 

您可能感兴趣的文章:

  • 一段4.4BSD源码含义求解?
  • ubuntu下的c程序,关于无连接套接字通信的,求解! iis7站长之家
  • 哪里能够下载到针对InterBase的第三类的JDBC驱动程序InterClient?高分求解......
  • 求解:为什么我写的Java程序不能显示中文。
  • 高分求解:如何设置程序的用户和组
  • 【一个关于Linux/Unix程序开发的问题,很久了,没有人解决】 ---------UP有分,高分求解
  • (菜鸟飞飞)求解释一段程序
  • 高分求解,怎样有APPLET打开服务器上的文件,最好有原程序。为什么没人理我??????
  • 简单的驱动程序问题,求解释
  • linux下,用g++编译一个qt程序,然后提示了一个错误,求解!
  • 求解:书上一个例子有一条语句不理解(附程序)在线等待…………
  • TCP服务端程序意外重启后,客户端连接不上的问题求解
  • linux下管道程序求解
  • $$$高分求解,关于带_start函数的原程序的问题
  • 200分求解:程序中同时用到共享库(.so)、静态库(.a),编译时gcc的参数该如何设置?
  • 100分求解:将这个C语言写的线程程序改写成C++程序
  • 求解:书上一个例子有一条语句不理解(附程序),欢迎讨论、在线等待…………
  • 一个关于IPC的程序所产生的疑问。。。求解
  • ubuntu下的c程序,关于无连接套接字通信的,求解!
  • 模拟聊天室程序//三点问题,附带注释,求解?
  • 【高分求解】 请帮帮忙,修改这个UNIX shell程序 【UP有分】 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  • 〖高分求解〗★★★★★【C语言,用UNIX的 Semaphore 写并发程序.---测试素数】★★★★★〖up有分〗
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求解 求解 求解
  • Linux Shell编程从初学到精通 第四章课后习题2 求解
  • 有限元求解器 GetDP
  • 偏微分方程求解工具箱 DUNE
  • linux命令求解释....
  • 偏微分方程求解框架 Overture
  • 100分求解!!!!!
  • 编译内核时候出现的问题,求解
  • makefile求解
  • 求解ucos ii的一句代码
  • 求助linux下mysql 求解!
  • 求解啊,centos下 shutdown -h now 无效??
  • 求解windows下硬盘安装linux如何用linux引导
  • 关于linux shell的一个不明白的地方。求解
  • solaris安装不上,求解.............
  • [FreeBSD] 大神,求解,control socket : can‘t to any socket
  • ubuntu12.04求解
  • 100分求解如何查看内存最高使用值!!
  • 高分求解---如何在DOS下查杀欢乐时光病毒?用哪种杀毒软件?Windows98没法进入了!
  • 求解struct的大小


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3