DOCTYPE html>C语言程序介绍-im电竞官方网站入口

彩神网

C語言程序介紹

【提要】本篇《C語言簡單的語言程字符驅動程序介紹》特別為需要介紹編程學習的朋友收集整理的,僅供參考。序介內容如下:

C語言程序介紹

C語言是語言程一種計算機程序設計語言,它既具有高級語言的序介特點,又具有匯編語言的語言程特點。以下是序介小編為大家搜索整理的.C語言簡單的字符驅動程序介紹。

C語言程序介紹

代碼分為:makefile ,語言程內核態程序 globalmem.c 用戶態程序 user.c 功能是序介把一個數組排序,你也可以使用 read write函數往內存里寫東西。語言程

C語言程序介紹

運行方法:

make,序介產生globalmem.ko文件,語言程 Insmod globalmem.ko ,序介 看一下 dmesg -c 是否有提示信息(也可以 lsmod | grep glo ), 有的語言程話說明加載上了,

然后 mknod /dev globalmem c 254 0 ,序介 看一下 ls /proc/device/ | grep glo 有東西沒。語言程

然后運行用戶態程序,數組被排序了。dmesg -c 可以看到提示信息, 在模塊中排序了。

上代碼(是帶鎖的代碼,順便練練手)

makefile

1# makefile for kernel 2.6

2ifneq ($(KERNELRELEASE),)

3#mymodule-objs := file1.o file2.o

4obj-m := globalmem.o

5

6else

7PWD := $(shell pwd)

8KVER := $(shell uname -r)

9KDIR := /lib/modules/$(KVER)/build

10all:

11 $(MAKE) -C $(KDIR) M=$(PWD)

12clean:

13 rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions

14

15endif

16

內核模塊

1#include

2#include

3#include

4#include

5#include

6#include

7#include

8#include

9#include

10#include

11#include mem.h

12

13#define GLOBALMEM_SIZE 0x1000

14#define MEM_CLEAR 0x1

15#define ARRAY_INSTER 0x2

16#define GLOBALMEM_MAJOR 254

17

18static int globalmem_major = GLOBALMEM_MAJOR;

19

20//the struct of global

21typedef struct __globalmem_dev{

22 struct cdev cdev;

23 unsigned char mem[GLOBALMEM_SIZE];

24 //add lock, signal

25 struct semaphore sem;

26 atomic_t ato;

27}globalmem_dev;

28

29globalmem_dev * global;

30

31typedef struct __arithmetic_st{

32 int buf[10];

33 int len;

34}arithmetic_st;

35

36

37

38

39int globalmem_open(struct inode *inode, struct file * filp)

40{

41 filp- private_data = global;

42 //you can only open one file

43 if(!atomic_dec_and_test( global- ato))

44 {

45 printk( KERN_NOTICE atomic is lock

46 return -EBUSY;

47}

48 return 0;

49}

50

51int globalmem_release(struct inode * inode, struct file * filp)

52{

53 atomic_inc( global- ato);

54 return 0;

55}

56

57

58//read

59static ssize_t globalmem_read(struct file * filp, char __user *buf, size_t size, loff_t *ppos)

60{

61 unsigned long p = *ppos;

62 unsigned int count = size;

63 int ret = 0;

64

65 globalmem_dev *dev = filp- private_data;

66

67 if(p GLOBALMEM_SIZE)

68 return count ? -ENXIO : 0;

Older Article
IMPACT Day | im電競官方網站入口中國志愿者心系社區,踐行可持續生態理念
Newer Article
im電競官方網站入口視角 | 高標準倉儲設施如何賦能醫藥物流高質量發展

聯系我們

欲了解更多關于im電競官方網站入口的信息,歡迎聯系我們!

彩88_彩88「官网彩神网」 江苏五分-手机版下载 胜游亚洲|网址 中心购彩-通用app 彩名堂-ios 5分排列3-通用app 彩天下|Welcome