tun/tap 驱动源码分析
tun/tap驱动程序是Linux平台虚拟网卡驱动程序,驱动加载后会建立网络接口tun0,与其他网卡驱动不同的是,tun驱动并不会把到达的数据包发送出去,而是会暂时存储于队列之中,用户态进程可以通过read,write读写网络数据包,实质上 …
分类
软件技术文集:Linux 内核、编程语言、工程实践与算法。按标签可进一步筛选具体方向。
tun/tap驱动程序是Linux平台虚拟网卡驱动程序,驱动加载后会建立网络接口tun0,与其他网卡驱动不同的是,tun驱动并不会把到达的数据包发送出去,而是会暂时存储于队列之中,用户态进程可以通过read,write读写网络数据包,实质上 …
什么是字符驱动? 所谓驱动程序,本质上讲是硬件接口,因为操作系统不可能实现每种硬件的接口,所以只对厂商提供接口,只要厂商实现这些接口,就可被操作系统调用,Linux系统驱动程序分为字符设备驱动和块设备驱动,所谓字符设备驱动就是例如键盘驱动, …
AT&T BIOS模式 BIOS(Basic Input/Output System) 是基本输入输出系统,它是硬件之上的一层。为计算机提供了最基本的控制硬件方式,BIOS存储了基本的硬件信息,例如磁盘大小等,并负责引导系统。
这里写一个win32窗口程序,如果对c语言如何使用api创建窗口还不熟悉,请先学习win32 api的使用,网上有很多用masm编写win32程序的例子,使用masm编写win32程序也比较方便,这里便不再重复。
在MS-DOS下,没有保护模式与32位寄存器,程序可以直接调用BIOS中断,虽然DOS系统已经离我们远去,但是Intel CPU进入保护模式之前需在实模式下进行设置和跳转,所以实模式编程仍然具有一定的意义,在本篇中不介绍纯DOS环境下的 …
本篇介绍sse指令集,sse是流化SIMD扩展(Streaming SIMD Extension, SSE),提供全新的一组寄存器,处理128位打包数据。
这篇来介绍intel cpu的高级特性,SIMD-单指令多数据,从名字来看,就是执行一条指令可以计算多个数据。先从最简单的mmx指令集来看,在寄存器那篇已经提 到,mmx有 mm0-mm7 共8个64位寄存器,但是寄存器并非独立寄存器,而是 …
浮点数如何存储 浮点数的运算完全不同于整数,从寄存器到指令,都有一套独特的处理流程,浮点单元也称作x87 FPU。 现在看浮点数的表示方式,我们所知道的,计算机使用二进制存储数据,所表示的数字都具有确定性,那是如何表示浮点这种具有近似效果的 …
在c语言中,宏作为一种预编译手段,可以在编译之前进行替换,汇编中的宏只是语法与c有所差别,在语言中所起到的作用非常相近。 先来看MASM中宏的语法规范:
这篇介绍一下c内联汇编的使用,准确的说,内联汇编不算是汇编的语法,而是c/c++的语法,虽然c/c++是有标准参考的,但是不同编译器使用的 汇编不同,导致内联汇编是编译器相关的。这里介绍vc和gcc下c的内联汇编使用,vc使用masm语法 …