vpp之clib.h分析】的更多相关文章

vpp代码中有一个clib.h,其中封装了很一些很经典的位运算: //计算以2为底的对数,log2(x) //也就是计算2的N次方为x.x为uint32类型 #if defined (count_leading_zeros) always_inline uword min_log2 (uword x) { uword n; n = count_leading_zeros (x); return BITS (uword) - n - ; } #else always_inline uword mi…
ioctl.h 分析 我自己画了个解析图...不要嫌弃丑啊.. . 哈哈 type The magic number. Just choose one number (after consultingioctl-number.txt ) and use it throughout the driver. This field is eight bits wide (_IOC_TYPEBITS). number. The ordinal (sequential) number. It's eigh…
前言 vector 是最常用的 C++ 容器,其动态扩容的特性是普通数组不具备的,这大大增加了编程的灵活性.虽然平时用 vector 很多,也能基本理解其原理,但无法从深层次理解.直到研读了 vector 的源码,才能比较自信的说自己真正理解了 vector 的基本原理,正应了侯捷说的那句话:源码面前,了无密码.我会写两篇文章分别分析泛化 vector 和针对 bool 类型的特化 vector(即是 bit_vector,位向量容器).本文将分析泛化的 vector 的源码. vector概述…
#import "BIDAppDelegate.h" #import "BIDViewController.h" @implementation BIDAppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] init…
前言 上篇文章讲了 STL vector 泛化版本的实现,其采用普通指针作为迭代器,可以接受任何类型的元素.但如果用来存储 bool 类型的数据,可以实现功能,但每一个 bool 占一个字节(byte),而一个字节有 8 位(bit),这样就有点浪费了.所以 SGI STL 设计了一个特化版本的位向量容器 bit_vector 来节省空间内存.bit_vector 是一个 bit 位元素的序列容器,具有 vector 容器一样的成员函数,常用于硬件端口的控制.…
前言:String类在日常开发过程中使用频率非常高,平时大家可能看过String的源码,但是真的认真了解过它么,笔者在一次笔试过程中要求写出String的equals方法,瞬间有点懵逼,凭着大致的理解,算是写出来了,可是下来一翻String的源码顿悟,原来自己写得是多么的low,所以有必要把这些基础知识点记录下来,加深印象. 注:本文jdk源码版本为jdk1.8.0_172 1.String类的基本概念 首先String是不可变对象,其体现主要在String类是被final关键字修饰,因此该对象…
执行代码 public class Demo06 { public static void main(String[] args) { String s="hello"; System.out.println(s.hashCode()); }}以下是hashCode()源码public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (…
/* * 题目: * 编写程序,要去实现如下功能: 父进程创建子进程1和子进程2.子进程1向子进程2发送可靠信号,并传送额外数据为子进程1的pid*2; 子进程2接受可靠信号的值,并发送给父进程,父进程把接受的值进行打印. 提示:用sigqueue和sigaction实现 * */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include &…
//题目7:用*号输出空心菱形图案 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> //分析:菱形图案就是上下2个三角形 //abs() 绝对值函数(math.h>) 函数原型: int abs(int i); //扩展:fabs()绝对值函数 函数原型是double fabs(double x ); void main(){ //y轴 //…
//题目4:输入某年某月某日,判断这一天是这一年的第几天? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> //分析:某年决定是平年还是闰年,某月决定本月有多少天,最后结果是前几个月的时间+本月已过的天数 //闰年的判断 (year%4==0&&year%100!=0)||(year%400==0) int protect(int year, int month){ //yea…