- 博客(28)
- 资源 (1)
- 收藏
- 关注
原创 linux网络协议栈br_handle_frame_finish
/* note: already called with rcu_read_lock */int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb){ const unsigned char *dest = eth_hdr(skb)->h_dest; struct net_bridge_port *p = br_port_get_rcu(skb->dev); struct net..
2022-04-08 17:01:50 3240
原创 uboot 【board_init_r】
void board_init_r(gd_t *new_gd, ulong dest_addr){#ifdef CONFIG_NEEDS_MANUAL_RELOC int i;#endif#if !defined(CONFIG_X86) && !defined(CONFIG_ARM) && !defined(CONFIG_ARM64) gd = new_gd;#endif#ifdef CONFIG_NEEDS_MANUAL_RELOC for (i ..
2022-03-17 19:44:45 659
原创 uboot 【board_init_f】
void board_init_f(ulong boot_flags){#ifdef CONFIG_SYS_GENERIC_GLOBAL_DATA /* * For some archtectures, global data is initialized and used before * calling this function. The data should be preserved. For others, * CONFIG_SYS_GENERIC_GLOBAL_DATA ..
2022-03-17 17:54:29 1206
原创 linux网络协议栈neigh_update
/* Generic update routine. -- lladdr is new lladdr or NULL, if it is not supplied. -- new is new state. -- flags NEIGH_UPDATE_F_OVERRIDE allows to override existing lladdr, if it is different. NEIGH_UPDATE_F_WEAK_OVERRIDE will suspect...
2021-04-14 10:26:17 635
原创 linux网络协议栈neigh_periodic_work
static void neigh_periodic_work(struct work_struct *work){ struct neigh_table *tbl = container_of(work, struct neigh_table, gc_work.work); struct neighbour *n; struct neighbour __rcu **np; unsigned int i; struct neigh_hash_table *nht; NEIGH_CACHE..
2021-04-13 15:07:00 549
原创 linux网络协议栈neigh_timer_handler
/* Called when a timer expires for a neighbour entry. */static void neigh_timer_handler(unsigned long arg){ unsigned long now, next; struct neighbour *neigh = (struct neighbour *)arg; unsigned int state; int notify = 0; write_lock(&neigh->..
2021-04-13 13:34:44 436
原创 linux网络协议栈arp_process
/* * Process an arp request. */static int arp_process(struct sk_buff *skb){ struct net_device *dev = skb->dev; struct in_device *in_dev = __in_dev_get_rcu(dev); struct arphdr *arp; unsigned char *arp_ptr; struct rtable *rt; unsigned char *s..
2021-04-12 17:57:04 740 4
原创 linux网络协议栈br_handle_frame
rx_handler_result_t br_handle_frame(struct sk_buff **pskb){ struct net_bridge_port *p; struct sk_buff *skb = *pskb; const unsigned char *dest = eth_hdr(skb)->h_dest; br_should_route_hook_t *rhook; //本地环回包直接返回 if (unlikely(skb->pkt_typ.
2021-03-15 17:53:54 822
原创 linux网络协议栈ip_rcv
int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, struct net_device *orig_dev){ const struct iphdr *iph; struct net *net; u32 len; //丢弃PACKET_OTHERHOST类型的包 /* When the interface is in promisc. mode, drop all the.
2021-03-12 16:39:56 893
原创 linux网络协议栈__netif_receive_skb_core
static int __netif_receive_skb_core(struct sk_buff *skb, bool pfmemalloc){ struct packet_type *ptype, *pt_prev; rx_handler_func_t *rx_handler; struct net_device *orig_dev; bool deliver_exact = false; int ret = NET_RX_DROP; __be16 type; net_timest.
2021-03-10 11:06:19 1905
原创 移植LLDP协议到mips架构设备
目的:移植LLDP协议到mips架构设备,实现基本的链路发现功能。源码下载:lldpd-master: https://github.com/lldpd/lldpd libevent: https://github.com/libevent/libevent/tree/5df3037d10556bfcb675bc73e516978b75fc7bc7交叉编译:解压lldpd-master.zip 将libevent-5df3037d10556bfcb675bc73e...
2021-03-04 14:38:09 1216 3
原创 基于readline库,实现命令行补全和记录
#if 1/* GNU Readline是一个跨平台开源程序库,提供交互式的文本编辑功能。应用程序借助该库函数,*//*允许用户编辑键入的命令行,并提供自动补全和命令历史等功能。Bash(Bourne Again Shell)、GDB/*/*tp 和mail等程序就使用Readline库提供其命令行界面。*//*主要函数*/char *readline(
2017-06-29 17:30:16 4750 1
原创 python核心编程学习笔记【2016-10-13】
@python 对象 #对象的3个特性 身份:使用内建函数id()得到 类型:type() 值:对象表示的数据项#所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小。每个对象天生具有布 尔 True 或 False 值。空对象、 值为零的任何数字或者 Null 对象 None 的布尔值都是 False。Python 提供了 is 和 is not
2016-10-13 00:14:42 272
原创 python核心编程学习笔记【2016-10-12】
@第三章练习 #字符串格式化 不再抑制 readTextFile.py 中 print 语句生成的 NEWLINE 字符, 修改你的 代码, 在显示一行之前删除每行末尾的空白。 这样, 你就可以移除 print 语句末尾的逗号了。 提示: 使用字符串对象的 strip()方法 s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符 s.lstri
2016-10-12 00:36:01 319
原创 python核心编程学习笔记【2016-10-08】
@3.Python基础 #语句和语法 代码组由不同的缩进分隔 &*缩进四个空格宽度,避免使用制表符 #变量赋值 多元赋值 #专用下划线标识符 _xxx 不用’from module import *’导入 xxx系统定义名字 __xxx 类中的私有变量名 &避免用下划线作为变量名的开始模块结构
2016-10-10 00:45:22 302
转载 python中List的sort方法(或者sorted内建函数)的用法
python列表排序 简单记一下python中List的sort方法(或者sorted内建函数)的用法。 关键字: python列表排序 python字典排序 sorted List的元素可以是各种东西,字符串,字典,自己定义的类等。 sorted函数用法如下: Python代码 sorted(data, cmp=None, k
2016-10-07 23:56:58 535
原创 python核心编程学习笔记【2016-10-06】
@python起步 #程序输出,print语句以及“hello world” $在交互式解释器中,可以使用print输出变量值,也可以仅使用变量名查看变量值,一下是关于字符串‘hello world’的一个例子: ??发现两者在输出字符串的时候存在差异,后者有单引号,这是为了让非字符串对象也能以字符串的方式显示在屏幕上--即它显示的是
2016-10-07 23:54:23 609
原创 对linux_list中宏和函数的理解[part1 基本使用]
Part1 基本使用 @1.宏 #1.offsetof #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) TYPE~结构体 MEMBER~结构体成员 (TYPE *)0)~ 把0地址强转为TYPE类型的结构体
2016-09-30 14:34:09 792
原创 关于数组名的思考和验证
1.数组名是指针么?建立一个二维数组,用sizeof进行验证。#include#includeusing namespace std;int main(){ char a[10][10]; /*&a,a,a[0],&a[0],&a[0][0]那些是指针,那些不是指针,用sizeof进行验证*/ printf("sizeof(&a) = %d\r\n",sizeo
2016-03-05 00:07:42 306 1
转载 数组与指针剖析
数组与指针生来就是双胞胎,多数人就是从数组的学习开始指针的旅程的。在学习的过程中,很自然就会经常听到或见到关于数组与指针的各种各样的看法,下面我节选一些在各种论坛和文章里经常见到的文字: “一维数组是一级指针”“二维数组是二级指针”“数组名是一个常量指针”“数组名是一个指针常量”........................ 这些文字看起来非常熟悉吧?类似的文字还
2016-03-04 22:53:33 348
转载 数组名是一个指针常量吗?
数组名是一个指针常量这种观点来源于数组名在表达式计算中与指针的结果等效性。例如下面的代码: int a[10], *p = a, *q;q = a + 1;q = p + 1; 在效果上看,a + 1与 p + 1是相同的,这很容易给人一种a就是p的假象,但,这仅仅是假象。鉴于指针常量包含了指针和常量两类概念,我们可以把这个问题分开两部分进行讨论。 一、数组名是指针
2016-03-04 22:49:00 22945 5
转载 ARM中的RO、RW和ZI DATA说明
RO段、RW段和ZI段 要了解RO,RW和ZI需要首先了解以下知识:ARM程序的组成 此处所说的“ARM程序”是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,这一点清注意区别。 一个ARM程序包含3部分:RO,RW和ZI。RO是程序中的指令和常量;RW是程序中的已初始化变量
2016-01-21 23:16:12 357
转载 HEX文件和BIN文件格式的区别
HEX文件和BIN文件是我们经常碰到的2种文件格式。下面简单介绍一下这2种文件格式的区别:1 - HEX文件是包括地址信息的,而BIN文件格式只包括了数据本身 在烧写或下载HEX文件的时候,一般都不需要用户指定地址,因为HEX文件内部的信息已经包括了地址。而烧写BIN 文件的时候,用户是一定需要指定地址信息的。
2016-01-21 22:01:40 526
原创 ucosii系统初始化函数
OSInitHookBegin(); /* Call port specific initialization code */ // 初始化系统钩子函数:不懂
2015-12-29 23:51:49 862
转载 求无符号数中1的个数
判断32位无符号整数二进制中1的个数1、比较简单和容易理解的方法就是逐位比较法:#include using namespace std; int findone(unsigned int n){ for(int i=0;n>0;n>>=1) i+=(n&1); return i; } int main(){
2015-12-13 12:02:53 1081
原创 stm32F1系列闪存编程学习
【1】闪存模块的组织1.主储存器:大容量产品:pagesize=2KB2.信息块:启动程序代码--->stm32从系统存储器启动时的代码,自举模式下的启动程序,这个区域只保留给ST使用,启动程序使用USART1 串行接口实现对闪存存储器的编程。 用户选择字节3.闪存存储器接口寄存器:控制闪存的相关寄存器【2】闪存编程和擦除控制器(FPEC)
2015-11-29 23:19:38 1219
原创 算法:C实现 数组
3-5.厄拉多塞筛#include#define N 100int main(void){ int i,j; int a[N]; for(i=2;i<N;i++) a[i]=1; for(i=2;i<N;i++) if(a[i]==1) for(j=i;j<N/i;j++) //j从i开始就不会重复查找了,j<N
2015-11-01 23:24:39 287
原创 连通性问题
1.快速查找#include#define N 10int main(void){ int p,q; //输入的连通对 int i,temp,a[N]; for(i=0;i<N;i++) a[i]=i; while(scanf("%d%d",&p,&q)==2) { if
2015-10-27 22:31:09 326
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人