itop-4412开发板使用第一篇-信号量的学习使用(未完待续)

1. 本次基于itop-4412研究下Linux信号量的使用方法。

2. 创建信号量的函数,信号量的头文件在那个路径?编译应用程序的话,头文件有3个路径,内核源码头文件,交叉编译器头文件,ubuntu的头文件,不是很理解为啥交叉编译器也需要头文件,全用内核源码不行吗?书上说内核信号量和用户空间信号量(也叫IPC信号量)有区别的,前者用于内核同步,后者用于用户进程间同步。下面的函数是创建或者寻找信号量,在IPC信号量是一组的,内核信号量是一个的。

sem_id = semget((key_t)1234, 1, 0666 | IPC_CREAT);

3. 找到semget的函数原型。先找到了头文件\iTop4412_Kernel_3.0_20140521\iTop4412_Kernel_3.0\include\linux\sem.h,再找到C文件\iTop4412_Kernel_3.0_20140521\iTop4412_Kernel_3.0\kernel\semaphore.c,不过奇怪的地方在于本次的例程用到的头文件是,不是linux下的目录,我猜应该是交叉编译器的路径。

#include <sys/sem.h>

4. 进入\iTop4412_Kernel_3.0_20140521\iTop4412_Kernel_3.0\kernel\semaphore.c,发现里面的函数是,难道就是上面说的内核信号量的函数,和IPC信号量名称也不一样,翻翻书看下,果然看了一下,linux提供两种信号量,内核信号量,由内核控制路径使用,System V IPC信号量,由用户态进程使用。下面的就是内核部分的信号量。

int down_trylock(struct semaphore *sem)
{
    unsigned long flags;
    int count;

    spin_lock_irqsave(&sem->lock, flags);
    count = sem->count - 1;
    if (likely(count >= 0))
        sem->count = count;
    spin_unlock_irqrestore(&sem->lock, flags);

    return (count < 0);
}

void up(struct semaphore *sem)
{
    unsigned long flags;

    spin_lock_irqsave(&sem->lock, flags);
    if (likely(list_empty(&sem->wait_list)))
        sem->count++;
    else
        __up(sem);
    spin_unlock_irqrestore(&sem->lock, flags);
}

原文地址:https://www.cnblogs.com/429512065qhq/p/8486156.html

时间: 2024-07-31 14:30:14

itop-4412开发板使用第一篇-信号量的学习使用(未完待续)的相关文章

天嵌IMX6开发板测试-第一篇

1.看下开发板介绍 1 品牌: 天嵌 2 CPU型号: NXP i.MX6Q 3 架构: Cortex_A9 4 主频: 4*1GHz 5 内存: 2GB DDR3 6 存储: 8GB eMMC FLA(64GB可扩) 2. 看下相关驱动啥的. 驱动  在内核中的源码位置  系统中的设备名称  emmc/sdcard 驱动 drivers/mmc/host:sdhci-esdhc-imx.c sdhci.c sdhci-platform.c sdhci-pltfm.c  /dev/mmcblk*

创龙DSP6748开发板测试-第一篇(未完)

1. 创龙DSP6748开发板测试.2980元的售价很高,我估计新的1200元比较合适,当然创龙定价是按照供需关系的.仿真器XDS100V2卖598元,真是狮子大张口. 2. 上电是5V-2A的电源. 原文地址:https://www.cnblogs.com/429512065qhq/p/8395009.html

学完STM32开发板,就选4412开发板让你有目标的学习嵌入式开发

600余页用户使用手册 linux实验手册(资料不断更新)100期配套零基础高清视频教程 轻松入门 (资料不断更新)2000人售后认证群 在线支持 售后无忧 源码全开源  原厂技术资料经典学习书籍推荐 部分视频目录分享: iTOP-4412精英版搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具快速读取与超大容量,纵使海量思考也能及时处理.独家配备三星S5M8767电源管理,最优架构! 配备Android.Linux + Qt.Ubuntu操作系统,开启学习.研发的

Python学习笔记——基础篇【第二周】未完待续

python介绍 cpython print("alex xx")  c解释器 .pyc(字节码)  机器码 cpu jphthon print("alex xx") java解释器 Java字节码 机器码 cpu irongpython print("alex xx") C#解释器 C#字节码 机器码 cpu ruby js... pypy print("alex xx") 解释器 字节码  机器码 cpu 最快 代码执行的

4412开发板三星cortex-A9四核开发板友坚科技

UT4412BV03开发板介绍 4412开发板三星cortex-A9四核开发板友坚科技 友坚恒天科技urbetter.net专注于三星平台产品的研发,是三星在中国最具实力的方案公司.公司主打的三星平板电脑方案销量,连续多年稳居第一.公司定位于中高端产品的研发,具有多年的嵌入式产品研发经验:基于三星 A15-Exynos 5250.A9-Exynos 4412.A8-S5PV210.ARM11-S3C6410.ARM9-S3C2416等处理器,开发了系列化的产品,为客户提供了全面的产品选择及专业化

4412开发板疯狂大促销,团购火热进行中

特大喜讯:九鼎创展全新四核x4412开发板正值上市推广期,特拿出100套开发板进行团购疯狂大促销,仅此100套,卖完即恢复原价.团购QQ群:16073601 团购优惠价: x4412开发板+7寸高清电容屏[1024*600]=699元 x4412开发板+7寸高清电容屏[1024*600]+优质红外遥控器[提供源码]=699元 x4412开发板+7寸高清电容屏[1024*600]+优质红外遥控器[提供源码]+USB WIFI=699元 x4412开发板+7寸高清电容屏[1024*600]+优质红外

[学习开发板怎么选]迅为4412开发板帮你入门嵌入式

丰富选配模块 入门视频教程(购买后提供完整版高清教程)部分视频观看地址: [视频教程]iTOP-4412开发板之学习方法--致初学者 http://v.youku.com/v_show/id_XNzQ5MDA4NzM2.html [视频教程]三星Exynos 4412处理器开发要点 http://v.youku.com/v_show/id_XNjIwODA0MTY4.html [视频教程]iTOP-4412开发板之如何扩展不同型号LCD屏 http://v.youku.com/v_show/id

学习嵌入式4412开发板-手把手配套视频_2000人群组在线交流

物联网学习开发板_迅为4412开发板_视频教程从入门到精通 共享海量学习资料.学不会才是奇迹一. 视频教程:免费视频教程(迅为一线研发工程师录制-不断更新) 第一部分 迅为电子开发板入门视频 (数量:53节)第二部分 iTOP-4412开发板硬件设计指导视频 (数量:4节)第三部分 uboot教程 (数量:10节)第四部分 Linux系统编程 (数量:69节)第五部分 Linux-x86-Qt5.3.2以及QtE4.7.1应用视频 (数量:5节)第六部分 Linux驱动教程 (数量:44节)第七

4412开发板Linux系统编程实战-字符设备控制

在 linux 驱动中字符驱动是必须掌握的,本章主要介绍字符设备应用的程序,无论是学习了后面的知识自己写的字符驱动,还是已有的字符驱动,都需要能够写一些简单的应用程序. 即使从事 linux 驱动的工作,linux 驱动写出来之后,也需要由驱动程序员编写简单的应用进行测试的. 另外,关于驱动部分,迅为电子有专门的驱动实验教程提供给大家学习,大家有了这些基础之后再去学习底层的知识就会很容易了. 在使用手册的第八章,大家可以看到这些 c 程序也是可以在 Android 下面运行的,只不过没有图形界面