四个操作函数直接的区别,如下图: /** * skb_put - add data to a buffer * @skb: buffer to use * @len: amount of data to add * * This function extends the used data area of the buffer. If this would * exceed the total buffer size the kernel will panic. A pointer to the…
skb_clone--只复制skb描述符本身,如果只修改skb描述符则使用该函数克隆: pskb_copy--复制skb描述符+线性数据区域(包括skb_shared_info),如果需要修改描述符以及数据则使用该函数复制: skb_copy--复制所有数据,包括skb描述符+线性数据区域+非线性数据区,如果需要修改描述符和全部数据则使用该函数复制: /** * skb_clone - duplicate an sk_buff * @skb: buffer to clone * @gfp_mas…
alloc_skb--分配skb dev_alloc_skb--分配skb,通常被设备驱动用在中断上下文中,它是alloc_skb的封装函数,因为在中断处理函数中被调用,因此要求原子操作(GFP_ATOMIC) kfree_skb--减少skb引用,为0则释放,用于出错丢包时释放skb使用: dev_kfree_skb==consume_skb--减少skb引用,为0则释放,成功状态下释放skb使用: static inline struct sk_buff *alloc_skb(unsigne…
一.时间管理函数 μC/OS-Ⅲ系统提供一些列时间管理服务函数: 1.OSTimeDly():任务延时n个时钟节拍. 2.OSTimeDlyHMSM():任务延时指定的时间,采用“时:分:秒:毫秒”方式指定. 3.OSTimeDlyResume():恢复被延时的任务.注意,一个任务利用这个函数恢复其他函数时,被恢复任务不知道自己是被其他任务恢复,会任务是延时结束而得到恢复.所以此函数要谨慎使用. 4.OSTimeGet():获取当前时钟节拍计数器的值. 5.OSTimeSet():设置时钟节拍计…
(1)内存管理函数与内存管理运算符的区别 内存管理函数有内存分配函数,malloc calloc realloc 以及内存释放函数free. 内存管理运算符有new 和delete. 两种内存管理方式的最大区别就是malloc以及free等内存管理函数是库函数,不在编译器的控制 范围之内.并且在创建对象实例时,malloc只是负责内存的分配,并没有对分配的内存调用构造函数以及初始化.malloc分配的内存时void类型的内存,需要做相应的内存转换. 而内存管理运算符(new delete)完成了…
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #functools:管理函数工具 #作用:处理其他函数的函数 #版本:2.5及之后 #用于调整或者扩展函数和其他可回调对象,不用重写 #修饰符:主要工具是partial在,用于包装,一个有默认参数可回调对象.得到对象本身是可回调的,可以看作就像是原来的函数,它与原函数完全相同,调用时也可以提供额外的位置或者命名参数,可以使用partial而不是lambda提供的默…
POSIX基本的几个线程管理函数见下表: ------------------------------------------------------------------------------------------                      POSIX函数                                                         描述 --------------------------------------------------…
矩阵管理函数:glLoadIdentity()是把当前活动矩阵设置为单位矩阵. 栈处理函数:glPushMatrix()是将当前活动的变换矩阵复制一份,压入栈顶:glPopMatrix()是破坏当前活动的变换矩阵,将栈顶的矩阵弹出,设置为当前矩阵.栈中最底下默认有一个单位矩阵,因此glPopMatrix()只有在栈中矩阵数量>=2时才能使用. 9.8和9.9节书中提到,使用栈处理函数比矩阵管理函数更高效,尤其是在栈函数使用硬件实现时(这句话没有理解).拿7.4节的例子(介绍矩阵操作在7.9节中)…
记录学习的点点滴滴,参考侯捷<<C++内存管理>> 我们先重载一下C++的几个内存管理函数 operator new, operator new[], operator delete, operator delete[] 1.创建一个类 class Foo { private: public: Foo():_id() { cout << "default ctor.this=" << this << " id=&qu…
本来想简化 ThinkSNS 系统里面的一个缓存管理函数: <?php /** * 用来对应用缓存信息的读.写.删除 * $expire = null/0 表示永久缓存,否则为缓存有效期 */ function S($name, $value = '', $expire = null) { static $_cache = array(); //减少缓存读取 $cache = model('Cache'); //$name = C('DATA_CACHE_PREFIX').$name; if (…