<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            C語言

            C語言程序介紹

            時間:2025-03-01 19:07:04 C語言 我要投稿

            C語言程序介紹

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

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

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

              運行方法:

              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;

            【C語言程序介紹】相關文章:

            C語言程序試題04-26

            c語言入門經典程序08-01

            C語言經典程序題09-17

            c語言鏈接程序08-26

            C語言程序實例10-10

            C語言程序的段06-14

            c語言入門的經典程序07-25

            C語言程序的實現09-27

            C語言程序分析08-27

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看