自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 VS Code设置C/C++代码格式化(Linux kernel代码排版设置)

快捷键Shift + Alt + F打开文件->首选项->设置或者快捷键Ctrl + ,搜索设置clang如下图在上图中 C_Cpp:Clang_format_style下面的输入框中输入:{ BasedOnStyle: Google, UseTab: Never, IndentWidth: 4, TabWidth: 4, AllowShort...

2020-03-28 16:21:42 6823 4

原创 Node.JS实现定时器暂停恢复

在项目中,常常需要使用定时器做一些轮询的操作,Node JS里面提供了两个全局函数setTimeout和setInterval来实现,但是在使用中,定时任务往往是一些耗时操作,我们期望每一次轮询等操作做完了在重新开始定时器,因此需要对定时器进行暂停和恢复,所以对定时器进行了一个简单的封装,代码如下:class CTimer { /** * * @param {function} callback * @param {number} interval ms

2020-05-16 17:37:16 996

原创 Linux 字符设备驱动模板

在Linux内核里面,设备(device)主要分为字符设备,块设备,网络设备,字符设备驱动是Linux驱动基础,在看《Linux 设备驱动开发详解》这本书的过程中,把字符设备相知识记录整理如下。字符设备驱动的组成字符设备驱动模块加载和卸载函数//设备结构体struct xxx_dev_t{ struct cdev cdev; //......}xxx_dev;static str...

2020-05-05 14:18:09 1015 1

原创 Linux 文件系统与驱动

之前做应用程序的开发,就知道Linux系统的一大特点就是一切皆文件,一直以来对所有设备的操作都是使用系统函数open read write close来实现的,就没关心过系统里面是怎么实现对各种设备的区分和控制柜,直到开始看Linux设备驱动方面的知识以后,感觉像发现了新大陆一样的神奇,故把相关知识记录下来,方便以后自己查找。文件系统调用文件的打开int open(const char *p...

2020-05-04 11:37:32 926 1

原创 Linux 内核模快编程模板

模块编写入口函数int __init xxx_func(void){}module_init(xxx_func);出口函数void __exit xxx_func(void){}module_exit(xxx_func);模块信息声明MODULE_AUTHOR("whuer Xiaojie <1939346428@qq.com>");MOD...

2020-05-02 14:06:22 339

原创 Ubuntu18.04 安装ELDK交叉编译Linux kernel

ELDK 下载ELDK(Embeded Linux Development Kit),嵌入式Linux开发完成开发套件。安装包下载地址官方文档安装过程中遇到的问题这里下载的是最新的安装镜像(eldk-5.6-armv5te.iso)注:5.3和5.4的版本在Ubuntu18.04和Fedora20上安装不成功,一直报find: invalid mode ’+111‘的错误,原因是这...

2020-04-21 19:56:44 823

原创 Linux 编程时间和时区

在平时编写Linux代码的时候,每次用到时间或者是时区都需要去查找资料,为了以后方便,把平时用的的相关内容做个整理,方便以后查询,毕竟好记性不如烂笔头。相关结构体struct timeval/* A time value that is accurate to the nearest microsecond but also has a range of years. */str...

2020-04-18 14:51:26 517

原创 Linux 下C语言多线程编程--互斥锁

互斥锁互斥锁用来保证一段实际内只有一个线程在执行一段代码(保证共享数据的完整性)互斥锁变量typedef union{ struct __pthread_mutex_s __data; char __size[__SIZEOF_PTHREAD_MUTEX_T]; long int __align;} pthread_mutex_t;互斥锁的生成/* Initial...

2020-04-11 14:56:44 1103

原创 Linux 下C语言多线程编程--线程数据

线程数据在C语言编程中,我们都知道,数据共享往往是通过全局变量的方式,全局变量在单线程中不会有什么问题,但是在多线程情况下,如果多个线程都对这个全局变量进行读写操作,需要加锁进行保护,锁的代价其实是很大的。在实际的使用中,很多时候我们只想要线程之间的全局变量,只能在该线程内访问,其他线程不能访问,这个时候就可以使用线程数据来实现,通过一个键值pthread_key_t来实现键值的创建函...

2020-04-11 11:14:16 445

原创 Linux 下C语言多线程编程--线程属性

线程属性属性结构union pthread_attr_t{ char __size[__SIZEOF_PTHREAD_ATTR_T]; long int __align;};属性值不能直接设置,必须使用相关函数进行操作,线程属性主要包括:是否绑定,是否分离,堆栈地址,堆栈大小,优先级初始化函数函数原型/* Initialize thread attribute *ATTR ...

2020-04-09 20:18:49 435 1

原创 Linux 下C语言多线程编程

进程与线程的区别进程拥有独立的地址空间,而且进程间的数据空间也相互独立,数据的传递得通过通信的方式;线程是在一个进程下同时运行,多个线程之间的数据共享线程的启动函数原型:/* Create a new thread, starting with execution of START-ROUTINE getting passed ARG. Creation attributed...

2020-04-03 19:00:07 209

原创 Linux Socket 编程相关函数

struct sockaddr and struct sockaddr_instruct sockaddr定义在<sys/socket.h>头文件中,原型如下/* Structure describing a generic socket address. */struct sockaddr{ //unsigned short int sa_family; //表明协议族,...

2020-03-28 15:46:25 308

原创 Linux 下使用select 实现TCP server和TCP client

基于TCP(面向链接)的socket编程Server端的流程如下:1 创建Socket套接字2 将套接字绑定到一个本地地址(IP)和端口(port)上3 将套接字设置为监听模式,准备接收客户端请求(listen)4 等待客户端请求,当请求到来后,接受链接请求,返回一个新的对应于此次链接的套接字(accept)5 用返回的套接字和客户端进行通信(send/recv ...

2020-03-28 14:18:38 3134 1

原创 git学习笔记

一、本地git仓库的创建 在要创建本地git仓库的目录下运行git bash(也可以通过git bash 创建一个新的目录来创建仓库:$ mkdir name $cd name) 执行$ git init 就完成了一个本地仓库的创建,这时该目录下会出现一个 .git文件(又可能会被隐藏),这个就是git用来管理和跟踪的目录了。$ mkdir test$ cd test$gi

2018-01-19 19:24:04 147

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除