- 博客(56)
- 资源 (2)
- 问答 (2)
- 收藏
- 关注
原创 nng协议之 nng_posix_resolv_sysiinit()初始化
nng协议之 nng_posix_resolv_sysiinit()初始化
2024-07-22 16:40:30
246
原创 nng协议nni_posix_resolv_sysinit()系统初始化
nng协议 nni_posix_resolv_sysinit 系统初始化
2024-07-17 23:18:16
683
原创 nng协议nni_posix_pollq_create(nni_posix_pollq *pq) 初始化
nni_posix_pollq_sysinit 初始化
2024-07-14 17:41:42
944
原创 c语言的内存使用
定义一个结构体指针ptr,在内存中申请 sizeof(Info) * num大小的内存。在访问内存的时候,由于是按照Info大小进行申请的,可以使用数组的下标进行快速访问。定义一个结构体Info,
2023-11-08 22:14:44
170
原创 Git的别名
Git 只是简单地将别名替换为对应的命令,然而,你可能想要执行外部命令,而不是一个Git子命令。这样输入git visual 就会得到在bash终端输入gitk 的效果(但是直接输入git gitk是不会得到预期输入的。git commit -m "提交信息" 只需要执行 git ci -m "提交信息"在执行了上述命令之后, git checkout 只需要执行 git co ...git last 就可以显示上次提交信息。
2022-10-11 14:21:21
179
原创 Git远程仓库分支合并,撤销git add,commit,push...
Git远程仓库分支合并,撤销git add,commit,push...
2022-10-11 12:03:39
1271
原创 linux安装软件cannot initiate the connection toxxx
cannot initiate the connection to xxx
2022-07-29 17:59:06
1958
原创 In function ‘xxx‘ warning: control reaches end fo no-void function [-Wreturn-type]
编译记录
2022-07-15 11:14:08
124
原创 牛客网笔试输入输出踩坑记录
关于牛客网的笔试题:1.要求输入一行字符,计算其中以空格分割的字符串的个数。比如 aaa bbbb ccc dddd 输出 4此类输入一般考生会直接fgets读入一行,然后处理并输出有多少个符合上述要求的字符串。另一种简单的处理方式是:char buf[128] = {0};while (scanf("%s", buf) != EOF){xxxx}这样也可以处理,比起一次读入一行,难度天壤之别。这个题目跟考生想的差别较大,特此记录,以示警醒!......
2022-05-13 16:48:10
422
原创 个人记录:函数指针、交叉编译
1.函数指针,一般有两种初始化方式,第一种是用结构体中的函数指针变量赋值的方式,第二种是使用专门的函数去注册。#include<stdio.h>#include<string.h>//定义一个函数指针类型(一种新的自定义类型,类似于结构体指针)typedef int (*getSum)(int a, int b);//函数指针要指向的函数实体int function_entity(int a, int b){ return a+b;}
2022-05-12 09:34:21
135
原创 内核编译No rule to make target ‘arch/x86/tools/relocs_32.c‘ need by ‘arch/x86/tools/relocs_32.o‘ . Stop
请认真检查你Makefile的变量(假设为linux_path=xxx, current_path=yyy)在定义的地方与在make -C $(xxx) M=$(yyy) modules使用的是否一样实在不行就复制一下如果上述原因没有解答你的问题,请无视上面的提示。...
2022-02-19 10:15:58
3923
原创 公司内部网络解决码云配置问题(gitee码云公玥管理)
前面的步骤参考这篇blog解决使用码云每次都要输入用户名密码_好记性不如烂笔头--玲博小记-CSDN博客_码云的用户名是什么开发者向代码托管平台写入代码时,最常使用的协议是SSH协议,因为 SSH 协议使用公钥认证,可以实现无口令访问,而若使用 HTTPS 协议每次身份认证时都需要提供口令。使用 SSH 公钥认证,就涉及到公钥的管理。一、码云创建ssh公钥1)生成生成ssh公钥,跟着步骤执行这些命令:ssh-keygen -t rsa -C "xxxxx@xxxxx.com" 将邮箱替换成码云注册邮..
2022-01-28 11:37:23
1163
原创 Linux内核链表【struct list_head】
Linux内核链表主要用于内核驱动程序中跟踪每个设备。内核中只实现了双向链表。本笔记只简单记录如何创建链表,向链表中添加节点,删除节点,遍历链表。1.使用内核链表需要包含的头文件:#include <linux/list.h>在内核中,将数据结构表示为链表之前,该结构必须嵌入struct list_head 字段struct car { int door_num; //自定义字段 char *color; //自定义字段 char *model;
2021-12-29 23:36:11
1142
原创 C结构体指针与堆内存的配合使用
1.声明一个结构体,然后申请这个结构体大小的整数倍m大小的内存,地址记为ptr2.声明一个该结构体指针类型的变量pool_memory,使其指向强制烈性转换后的ptr3.使用for循环,对内存进行数据初始化,然后尝试对初始化后的值进行输出。4.此方法可以用于底层开发时,对“数据通道”的操作,即可以用一片内存模拟出不同ID的通道,虽然实际上并不存在,但是可以通过指针的偏移量来控制访问指定空间的内存,达到虚拟通道的概念。5.demo如下:#include <stdio.h>#
2021-12-06 15:48:26
558
翻译 内核的睡眠机制 wait_event wake_up
进程通过睡眠机制释放处理器,使其能够处理其他进程。处理器睡眠的原因可能在于感知数据的可用性,或等待资源释放内核调度器管理要运行的任务列表,这被称作运行队列。Linux内核通过提供一组函数和数据结构来简化睡眠机制的实现等待队列: 等待队列实际上用于处理 被阻塞的I/O, 以等待条件的成立,并感知数据或资源可用性。为了理解其工作方式,参考其在include/linux/wait.h中的结构。struct __wait_queue{ unsigned int f...
2021-12-05 17:35:32
396
原创 Linux内核链表(2)
1.创建和初始化链表1.1动态方法 创建一个名为mylist的双向链表头节点,并使用宏INIT_LIST_HEAD进行初始化。struct list_head mylist;INIT_LIST_HEAD(&mylist);下面是INIT_LIST_HEAD的展开形式:static inline void INIT_LIST_HEAD(struct list_head *list){ list->next = list; list->prev = .
2021-12-05 15:16:26
166
原创 Linux内核链表(3)节点的添加、删除、遍历
1. 内核提供list_add 用于向链表添加新节点,它是内部函数__list_add的封装:void list_add(struct list_head *new, struct list_head *head);例如下面在链表中添加两个车的节点:struct car *redcar = kmalloc(sizeof(struct car), GFP_KERNEL);struct car *bluecar = kmalloc(sizeof(struct car), GFP_KERNEL)
2021-12-05 15:15:42
1547
原创 ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]警告问题及双向链表的地址问题
1.报此警告的意思是,在同一块中的非声明之后不能有声明。请把所有的声明变量放在函数的所有的初始化之前。2.编码误区,C中64位系统的指针大小就是8字节,申请的结构体指针必须按照如下格式进行置空操作。typedef struct information{ int a; char b; ...} Info, *INFO;struct information *in = (struct information*)malloc(sizeof(struct informati
2021-12-02 10:01:28
5669
原创 C语言的结构体大小、结构体不定数组、结构体末尾的指针、结构体位对齐、结构体嵌套内存对齐,结构体[位域]及强制从下一位开始对齐
C语言内存对齐及其计算
2021-11-26 17:05:30
883
转载 linux 内核宏container_of剖析
linux 内核宏container_of剖析 - 知乎1、前面说的我在好几年前读linux 驱动代码的时候看到这个宏,百度了好久,知道怎么用了,但是对实现过程和原理还是一知半解。 container_of宏 在linux内核代码里面使用次数非常非常多,对于喜欢linux编程的同学来…https://zhuanlan.zhihu.com/p/54932270...
2021-11-26 15:35:03
43
转载 modprobe基本用法
在linux桌面系统中,当你编译了新的驱动,为了能够用modprobe ***加载模块, 你需要先将模块拷贝到/lib/modules /2.6.31-20-generic(2.6.31-20-generic对应不同的版本,可以使用uname -r查看本机的目录)目录下,然后运行sudo depmod -a将模块信息写入modules.dep、modules.dep.bin、modules.alias.bin、modules.alias和modules.pcimap文件中。如,我编译了一个新的wifi驱
2021-11-23 19:38:23
2244
转载 linux内核将新驱动添加到menuconfig菜单
如果XLG那一个配置项前面选择的是[*]在.config中生成的CONFIG_XLG=y 此驱动程序将被编译到内核,如果选择的是M则会编译成单独的模块,即xxx.ko 可以通过手动insmod插入,rmmod移除。linux内核将新驱动添加到menuconfig菜单_雪狼的博客-CSDN博客linux内核驱动menuconfighttps://blog.csdn.net/zhaoxd200808501/article/details/76588568...
2021-11-23 13:56:53
234
原创 Linux新建用户无法从图形界面登陆
1.新建的用户无法从图形界面登陆(账号密码均正确的前提下)2.输入账户密码后闪一下又回到账户列表3.解决方法 3.1简单解: 删除无法登陆的用户直接新建一个用户(这里以用户名: test 为例),执行以下命令既可以从图形界面登陆: 3.1.1 使用一个可以登陆的用户登陆,sudo adduser test 3.1.2 sudo chown test /home/test -R 3.1....
2021-11-18 12:26:23
2616
转载 linux加载动态链接库so文件
有时出于软件灵活性的考虑,我们不会在编译阶段直接关联so文件,而是通过dlopen等几个函数调用动态加载,主要用到的函数接口有:dlopen dlsym dlclose需要包含的头文件是dlfcn.h,在编译时需要加上-ldl。下面是一个简单的例子,首先我们写一个lib_printnumber函数,只是将传入的参数打印出来。#include <stdio.h>void lib_printnumber(int arg){ printf("lib_printnumbe
2021-11-08 18:39:04
1374
Makefile内核模块编译
2022-01-27
消息队列msgget函数返回值一直都是0,创建的消息队列只在第一次开机正常运行
2019-01-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人