⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mytest.c

📁 一个简单的驱动程序开发框架,可以掌握驱动开发的基本流程.
💻 C
字号:
# include <stdio.h>
# include <string.h>
# include <stdlib.h>
# include <fcntl.h>
#include <linux/ioctl.h>

# define OK    1
# define ERROR 0

#define MEM_IOC_MAGIC     'M'
#define MEM_IOC_SETSIZE   _IO(MEM_IOC_MAGIC, 0)
#define MEM_IOC_PRINT     _IO(MEM_IOC_MAGIC, 1)
#define MEM_IOC_GETOFFSET _IOR(MEM_IOC_MAGIC,2,long)

typedef struct
{
	int fnode;
}MyMem;
int MyMemPrint(MyMem *mem)
{
	ioctl(mem->fnode,MEM_IOC_PRINT,NULL);
	return OK;
}
int MyMemSetSize(MyMem *mem, long size)
{
	ioctl(mem->fnode,MEM_IOC_SETSIZE,size);
	return OK;
}
long MyMemGetOffset(MyMem *mem)
{
	long o=0;
	ioctl(mem->fnode,MEM_IOC_GETOFFSET,&o);
	return o;
}
int MyMemOpen(MyMem *mem,char *fn)
{
	mem->fnode=open(fn,O_WRONLY);
	if(mem->fnode==0)
	{
		printf("Open error\n");
		return ERROR;
	}
	return OK;
}
int MyMemClose(MyMem *mem)
{
	close(mem->fnode);
	return OK;
}
int MyMemPuts(MyMem *mem,char *str)
{
	int l=strlen(str);
	long t;
	write(mem->fnode,str,l,&t);
	return OK;
}
int main(int argc, char *argv[])
{
	MyMem mem;
	MyMemOpen(&mem,"/dev/skeleton");
	MyMemSetSize(&mem,512);
	MyMemPuts(&mem,"Hello World!\n");
	MyMemPrint(&mem);
	printf("ok my offset=%ld\n",MyMemGetOffset(&mem));
	MyMemClose(&mem);
    return OK;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -