Linux API 是指 Linux 操作系统 提供的应用程序接口,用于与操作系统进行交互。它包含了一系列的函数、系统调用、库函数和数据结构,用于实现各种系统级的操作,如文件操作、进程管理、网络通信等。
Mininet作为一个轻量级的SDN仿真工具,在其系统实现架构中充分利用了Linux命名空间内核技术,其中Linux Network Namespace机制更是Mininet软件架构的基石,对网络资源
本文介绍了如何通过Linux内核定时器实现LED灯的闪烁,从硬件的配置、驱动程序以及示例代码方面进行了详细的阐述。通过申请GPIO、配置GPIO、编写驱动程序以及添加设备到内核和加载设备,最终实现了LED灯的闪烁。
工作队列(work queue)是另外一种将工作推后执行的形式,tasklet(小任务机制)有所不同。工作队列可以把工作推后,交由一个内核线程去执行,也就是说,这个下半部分可以在进程上下文中执行。这样,通过工作队列执行的代码能占尽进程上下文的所有优势。最重要的就是工作队列允许被重新调度甚至是睡眠。
https://www.zalou.cn/article/152879.htm上节,我们明白了proc文件系统的作用,接下来我们在已经写好的led驱动的基础上,在proc目录下创建一个文件夹,然后加入led驱动的版本信息读取。
上一篇分享的:从单片机工程师的角度看嵌入式Linux中有简单提到Linux的三大类驱动:
工作队列常见的使用形式是配合中断使用,在中断的服务函数里无法调用会导致休眠的相关函数代码,有了工作队列机制以后,可以将需要执行的逻辑代码放在工作队列里执行,只需要在中断服务函数里触发即可,工作队列是允许被重新调度、睡眠。
Linux 文件 I/O(Input/Output)基础是 Linux 应用程序开发中的重要组成部分。在 Linux 系统中,文件 I/O 涉及到文件的读取和写入,以及文件描述符、系统调用等概念。以下是 Linux 文件 I/O 的基础知识:
注:本文的代码仅用于功能验证,不能用于生产。本文对clone的标志的描述顺序有变,主要考虑到连贯性。
Linux应用编程涉及到在Linux环境下开发和运行应用程序的一系列概念。以下是一些涵盖Linux应用编程的基本概念:
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014688145/article/details/50615579
在项目开发时,经常会用到第三方库,也会自己创建动态库给别人或者给自己其他的工程项目使用。
在上一篇博客中已经实现了一个简单的插件和测试程序的编写,但是插件跟应用是分开独立的工程。实际应用开发中需要把相关的库和头文件打包到一个工程中,如下图所示,这样比较方便调试开发,也为创建跨平台工程提供了便利。
我们测试驱动加载是否正常工作,一般都会写应用程序去测试,这样驱动程序中需要实现 open、read 函数和 write 函数,然后写一个应用程序通过 open 打开节点,获取 fb 文件描述符,进而对文件进行读写操作。
所有者的权限为rw-,对应着4+2+0,也就是最终的权限6,以此类推,用户组的权限为6,其他用户的权限为4.
Apache Superset 是一个现代化的企业级商业智能 Web 应用程序,快速、轻量和直观。Superset支持接入各类数据源,提供了丰富的图表,所有技能组合的用户都可以轻松地对数据进行探索和可视化。
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/83721128
VFS使得用户可以直接使用open()等系统调用而无需考虑具体文件系统和实际物理介质。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huangweiqing80/article/details/83088465
从上图可知,同步 IO 必须等待内核把 IO 操作处理完成后才返回。而异步 IO 不必等待 IO 操作完成,而是向内核发起一个 IO 操作就立刻返回,当内核完成 IO 操作后,会通过信号的方式通知应用程序。
Linux上创建进程据说消耗很少,这个一直是Linux的特点,于是就专门测试Linux创建进程的极限,测试代码如下:
随着程序写的逐渐变多,或多或少的我们都会使用别人写好的库;或者我们不想让别人看到我们的一些核心程序,可以将核心程序封装成库。本次和大家分享的是在Ubuntu下使用Qt生成共享库以及在Qt中链接共享库的方法。
这个系列的博客贴的都是我大二的时候学习Linux系统高级编程时的一些实验程序,都挺简单的。
使用DEVICE_ATTR,可以实现驱动在sys目录自动创建文件,我们只需要实现show和store函数即可.
Linux内核在2.2版本中引入了类似线程的机制。Linux提供的vfork函数可以创建线程,此外Linux还提供了clone来创建一个线程,通过共享原来调用进程的地址空间,clone能像独立线程一样工作。Linux内核的独特,允许共享地址空间,clone创建的进程指向了父进程的数据结构,从而完成了父子进程共享内存和其他资源。clone的参数可以设置父子进程共享哪些资源,不共享哪些资源。实质上Linux内核并没有线程这个概念,或者说Linux不区分进程和线程。Linux喜欢称他们为任务。除了clone进程以外,Linux并不支持多线程,独立数据结构或内核子程序。但是POSIX标准提供了Pthread接口来实现用户级多线程编程。
linux系统操作: 1.通过make 编译出gpioled.ko文件 2.通过 /home/tina-d1-h/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc- thead_20200702/bin/riscv64-unknown-linux-gnu-gcc -o ledapp ledApp.c 编译出ledgpio 软件 MQpro: 1.通过insmod gpioled.ko加载gpioled驱动,通过ls /dev 查看是否有gpioled 2.通过 chmod 777 ledapp 添加权限 3.通过 ./ledapp /dev/gpioled 0 点亮LED 4.通过 ./ledapp /dev/gpioled 1 熄灭LED 注:以上命令没有跟LED高低电平相对应可以通过修改 gpioled.c led_write函数进行修改就好了
本文研究的主要是Linux进程函数fork(),vfork(),execX()的相关内容,具体介绍如下。
嵌入式系统在现代科技中发挥着越来越重要的作用,从智能家居到工业自动化,嵌入式设备已经无处不在。在开发嵌入式系统时,选择合适的操作系统是至关重要的一步。本文将深入探讨几种常见的嵌入式操作系统,并通过代码示例来比较它们的特性,以帮助开发者选择适合其项目的操作系统。
随着 Docker、Linux Containers 这些工具的出现,将 Linux 进程隔离到自己的小系统环境中隔离变得非常容易。这使得在一台真实的 Linux 机器上运行各种各样的应用成为可能,并确保它们之间不会互相干扰,而无需使用额外的虚拟机。这些工具为 PaaS 服务商带来了巨大的福音。但是这背后到底是如何实现的呢?
文章目录 Linux——进程管理篇(详解fork和exec) 🚗如何在Linux编写与运行代码 编写 编译 运行 🚗进程管理 fork system exec 🚗总结 Linux——进程管理篇(详解fork和exec) 🚀🚀这篇文章,主要的目的就是帮助同学们完成操作系统的实验,因为考虑到很多同学第一次接触Linux,相当不习惯命令行的操作方式,所以我会详细来介绍,相信只要跟着步骤一步一步来,就一定能完成我们的实验,好了,我们接下来就来介绍吧! ---- 🚗如何在Linux编写与运行代码 🚀🚀做实验,首
我们就继续以此为基础,用保姆级的粒度一步一步操作,来讨论一下字符设备驱动程序的编写方法。
最近因为一些学习的原因,需要使用一款跨平台的轻量级的GUI+图像绘制 C/C++库。经过一番调研以后,最终从GTK+、FLTK中选出了FLTK,跨平台、够轻量。本文将在Windows、macOS以及Linux Debian三套操作系统环境,对FLTK进行编译,并搭建简单Demo。这其中也有少许的坑,也在此文进行记录。
如果需要配置和检查我们工程中的所有依赖,那么可以选用CMake工具;但是,这并不是必须的,因为我们可以使用其他的工具或者是IDE(比如Makefiles或者Visual Studio)来配置我们的工程。然而,CMake是最好移植的方式来配置多平台的C++项目。
该文章介绍了如何通过Linux内核技术实现一个基于ARM SoC的通用驱动程序,该驱动程序可以支持多种外设如LED、按键、喇叭等。首先介绍了Linux内核的树状结构和通用驱动程序涉及到的关键组件,如驱动程序加载、设备管理、中断处理、队列和调度等。然后详细讲解了如何创建一个通用的驱动程序框架,该框架可以支持多个外设,如LED、按键、喇叭等。最后,介绍了如何通过修改测试程序来点亮LED,并通过一个简单的示例来展示通用驱动程序的效果。
这篇文章介绍Linux下线程的创建与基本使用案例,主要是案例代码为主;相关的函数详细介绍在上篇文章里已经介绍过了。
1)头文件 windows下winsock.h/winsock2.h linux下sys/socket.h 错误处理:errno.h 2)初始化 windows下需要用WSAStartup WSADATA wsaData; err = WSAStartup(0x202,&wsaData); if ( err != 0 ) { return 0; } else if ( LOBYTE( wsaData.wVersion )
本文演示了如何添加和识别存储空间,包括分区和安装文件系统。它还展示了调查驱动器空间利用率所需的命令。
实际上这些工具都是小应用。调试串口接电脑,开启控制台可以使用这些工具。如果USB连电脑,用adb调试工具,输入adb shell指令进入控制台。
之前的文章中,我们讲到了无文件执行的方法以及混淆进程参数的方法,今天我们继续讲解一种linux无文件执行的技巧,是后台朋友给我的提醒,万分感谢,又学到了新的东西。
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/83690667
在Linux设备驱动之字符设备(一)中学习了设备号的构成,设备号的申请与释放。在Linux设备驱动之字符设备(二)中学习了如何创建一个字符设备,初始化,已经注册到系统中和最后释放该字符设备。
上一篇文章学习了字符设备的注册,操作过的小伙伴都知道上一篇文章中测试驱动时是通过手动创建设备节点的,现在开始学习怎么自动挂载设备节点和设备树信息的获取,这篇文章中的源码将会是我以后编写字符驱动的模板。
本文介绍了管道(pipe)在Linux系统中的实现方式,从三个方面进行了详细阐述:管道的原理,命名管道,以及通过匿名管道进行的进程间通信。同时,文章还探讨了管道在Linux系统中的实际应用,包括shell脚本、cron任务以及Linux中的各种守护进程等。
wq = create_singlethread_workqueue("mydrv");
在刚开始学习Linux的时候,我们记住了Linux下一切皆文件,我们通过这篇文章来深入了解Linux下文件的构成及应用。
提到了关于Linux的设备驱动,那么在Linux中I/O设备可以分为两类:块设备和字符设备。这两种设备并没有什么硬件上的区别,主要是基于不同的功能进行了分类,而他们之间的区别也主要是在是否能够随机访问并操作硬件上的数据。
课本概念:程序的一个执行实例,正在执行的程序等 内核观点:担当分配系统资源(CPU时间,内存)的实体
引用一句经典的话:“UNIX下一切皆文件”。 文件是一种抽象机制,它提供了一种方式用来存储信息以及在后面进行读取。
领取专属 10元无门槛券
手把手带您无忧上云