c语言
星空语
linux驱动开发
展开
-
adb: error: 46-byte write failed: Invalid argument
adb push fail问题解决方法记录原创 2023-10-23 14:22:07 · 846 阅读 · 0 评论 -
strlen 和sizeof
sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。strlen原型:strlen遇到‘\0’返回,其长度不包括‘、0’sizeof是一个运算符,不是函数。原创 2023-03-09 10:11:52 · 48 阅读 · 0 评论 -
while(i ++) i是先加1 ,再进入循环体
写程序用while(i++)碰到一个问题,i的初始值没有进入循环体,后来验证后发现,i是先加1,再进入的循环体。原创 2023-03-08 16:37:24 · 580 阅读 · 0 评论 -
二分法查找 C
第一行两个正整数n,v(1原创 2023-03-03 19:16:55 · 54 阅读 · 0 评论 -
C语言基础知识总结及练习
…原创 2023-03-01 13:51:48 · 62 阅读 · 0 评论 -
如何唤醒 wait_event_interruptible()
线程1通过系统调用进入内核,后调用wake_up_interruptible等待唤醒事件,当事件不满足条件时,线程1进入休眠状态。中断或其他线程任务事件满足条件时,调用wait_event_interruptible,唤醒等待在wait_queue_head上的线程1。如果两个线程调用wait_event_interruptible(test,condition)阻塞休眠,一个中断调用wake_up_interruptible(test)但是并没有设置condition为1,会怎么样?原创 2023-02-28 17:04:46 · 307 阅读 · 0 评论 -
Linux下实现线程同步的四种方法:
条件本身是由互斥量保护的。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待“条件变量的条件成立”而挂起;如果另一个线程改变了条件,它发信号给关联的条件变量,唤醒一个或多个等待它的线程,重新获得互斥锁,重新评价条件。动态初始化,int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr);对共享资源的访问,要对互斥量进行加锁,如果互斥量已经上了锁,调用线程会阻塞,直到互斥量被解锁。原创 2023-02-28 15:49:04 · 1514 阅读 · 0 评论 -
g2d驱动设计流程
2、根据寄存器手册配置g2d 设备时钟。1、获取g2d 设备寄存器地址及映射。5、实现g2d中断函数。5、实现ioctl函数。原创 2023-02-24 17:03:26 · 229 阅读 · 0 评论 -
const char *str,char const *str,char *const str区别
str指向的内容是只读的,但是str 指向的地址是可以变的。原创 2023-02-23 23:32:30 · 151 阅读 · 0 评论 -
理解void *与 *(void **)的区别
就是它所指向的,在这里是指向放void型的地方;void** 是说: 这也是一个指针,去掉一个()就是它所指向的,它指向一个放void*型的地方.void* 是说: 这是一个指针,去掉一个(原创 2023-02-22 14:20:49 · 970 阅读 · 0 评论 -
嵌入式常问问题和知识
嵌入式面试常问问题原创 2023-02-21 09:57:27 · 1498 阅读 · 0 评论 -
有效防止softmax计算时上溢出(overflow)和下溢出(underflow)的方法
有效防止softmax计算时上溢出(overflow)和下溢出(underflow)的方法《Deep Learning》(Ian Goodfellow & Yoshua Bengio & Aaron Courville)第四章「数值计算」中,谈到了上溢出(overflow)和下溢出(underflow)对数值计算的影响,并以softmax函数和log softmax函数为例进行了讲解。这里我再详细地把它总结一下。『1』什么是下溢出(underflow)和上溢出(overflow)实数转载 2021-07-05 14:35:59 · 822 阅读 · 0 评论 -
container of()函数简介
在linux 内核编程中,会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,像我们这样的一般人就会绝望了(这一堆都是什么呀? 函数还可以这样定义??? 怎么还有0呢??? 哎,算了,还是放弃吧。。。)。 这就是内核大佬们厉害的地方,随便两行代码就让我们怀疑人生,凡是都需要一个过程,慢慢来吧。其实,原理很简单: 已知结构体type的成员member的地址ptr,求解结构体type的起始地址。 type的起始地址 = p转载 2021-03-29 14:21:12 · 616 阅读 · 0 评论