• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 297,  comments - 15,  trackbacks - 0

            If you want to compile the sum-module (source mirrored below), follow these steps:

            Create the Makefile in your directory with the sum-module.c

             obj-m    := sum-module.o

            KDIR    := /lib/modules/$(shell uname -r)/build

            PWD    := $(shell pwd)

            default:

                   $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

            Now do a

             make

            ... and the sum-module.ko is built.

             If you get something like this

            # make

            make: Nothing to be done for `default'.

            you need to install the kernel source and compile the kernel first (run "make" at least to the point until
             all "HOSTCC scripts/" stuff is done - this will configure your kernel and allows external module compilation).
            Make sure /lib/modules/$(shell uname -r)/build points to your build directory (most likely /usr/src/linux...).

            Another reason for the above error can be, that your browser converted the TAB before $(MAKE) to spaces.

            Make sure there is a TAB before $(MAKE).

            Install it with install.sh:

            #!/bin/sh

            install -m 644 sum-module.ko /lib/modules/`uname -r`/kernel/drivers/sum-module.ko

            /sbin/depmod -a (adjust the /lib/modules path according to your needs)

             Now make a

            # modprobe sum-module

            Or if you don't want to install the module, do this:

            # insmod ./sum-module.ko

            ..and if your system doesn't freeze you've done it right ;-)

             

            For kernel 2.4, the Makefile would look like this:

            TARGET       := modulename

            INCLUDE    := -I/lib/modules/`uname -r`/build/include

            CFLAGS      := -O2 -Wall -DMODULE -D__KERNEL__ -DLINUX

            CC  := gcc ${TARGET}.o: ${TARGET}.c

                   $(CC) $(CFLAGS) ${INCLUDE} -c ${TARGET}.c

             (not yet tested)

            sum-module source from: http://www.win.tue.nl/~aeb/linux/lk/lk-9.html

            /*

             * sum-module.c

            # modprobe sum-module.o

            # ls -l /proc/arith

            total 0

            dr-xr-xr-x    2 root     root            0 Sep 30 12:40 .

            dr-xr-xr-x   89 root     root            0 Sep 30 12:39 ..

            -r--r--r--    1 root     root            0 Sep 30 12:40 sum

            # cat /proc/arith/sum

            0

            # echo 7 > /proc/arith/sum

            # echo 5 > /proc/arith/sum

            # echo 13 > /proc/arith/sum

            # cat /proc/arith/sum

            25

            # rmmod sum-module

            # ls -l /proc/arith

            ls: /proc/arith: No such file or directory

            #

            */

            #include <linux/module.h>

            #include <linux/init.h>

            #include <linux/proc_fs.h>

            #include <asm/uaccess.h>

            static unsigned long long sum;

            static int show_sum(char *buffer, char **start, off_t offset, int length) {

                    int size;

                 size = sprintf(buffer, "%lld\n", sum);

                    *start = buffer + offset;

                    size -= offset;

               return (size > length) ? length : (size > 0) ? size : 0;

            }

            /* Expect decimal number of at most 9 digits followed by '\n' */

            static int add_to_sum(struct file *file, const char *buffer,

                                  unsigned long count, void *data)

            {

                    unsigned long val = 0;

                    char buf[10];

                   char *endp;

                    if (count > sizeof(buf))

                            return -EINVAL;

                    if (copy_from_user(buf, buffer, count))

                            return -EFAULT;

                    val = simple_strtoul(buf, &endp, 10);

                    if (*endp != '\n')

                            return -EINVAL;


                    sum += val;     /* mod 2^64 */

                    return count;

            }

             

            static int __init sum_init(void) {

                    struct proc_dir_entry *proc_arith;

                    struct proc_dir_entry *proc_arith_sum;

                    proc_arith = proc_mkdir("arith", 0);

                    if (!proc_arith) {

                            printk (KERN_ERR "cannot create /proc/arith\n");

                            return -ENOMEM;

                    }

                    proc_arith_sum = create_proc_info_entry("arith/sum", 0, 0, show_sum);

                    if (!proc_arith_sum) {

                            printk (KERN_ERR "cannot create /proc/arith/sum\n");

                            remove_proc_entry("arith", 0);

                            return -ENOMEM;

                    }

                    proc_arith_sum->write_proc = add_to_sum;

                    return 0;

            }

             

            static void __exit sum_exit(void) {

                    remove_proc_entry("arith/sum", 0);

                    remove_proc_entry("arith", 0);

            }

            module_init(sum_init);

            module_exit(sum_exit);

            MODULE_LICENSE("GPL");

             

             from:

            http://www.captain.at/programming/kernel-2.6/

            http://blog.ednchina.com/fafen/267973/message.aspx
            posted on 2010-04-14 23:00 chatler 閱讀(478) 評論(0)  編輯 收藏 引用 所屬分類: linux kernel
            <2011年3月>
            272812345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            常用鏈接

            留言簿(10)

            隨筆分類(307)

            隨筆檔案(297)

            algorithm

            Books_Free_Online

            C++

            database

            Linux

            Linux shell

            linux socket

            misce

            • cloudward
            • 感覺這個博客還是不錯,雖然做的東西和我不大相關,覺得看看還是有好處的

            network

            OSS

            • Google Android
            • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
            • os161 file list

            overall

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            综合人妻久久一区二区精品| 亚洲国产精品久久电影欧美 | 久久精品免费观看| 91性高湖久久久久| 中文字幕无码免费久久| 精品久久一区二区| 久久强奷乱码老熟女网站 | 久久精品国产精品亜洲毛片| 成人午夜精品无码区久久| 99久久国产综合精品五月天喷水 | 久久亚洲精品无码播放| 欧美丰满熟妇BBB久久久| 国产精品女同一区二区久久| 伊人久久精品无码二区麻豆| 久久久久国产一区二区三区| 999久久久无码国产精品| 精品国产乱码久久久久久人妻| 国产免费久久精品丫丫| 97久久超碰国产精品2021| 波多野结衣久久一区二区| 国产免费久久精品99久久| 精品久久久久久国产91| 久久夜色精品国产网站| 亚洲中文字幕无码久久精品1| 久久精品?ⅴ无码中文字幕| 国产精品久久久久影院嫩草| 久久久久国产精品人妻| 99精品国产免费久久久久久下载| 欧美色综合久久久久久| 久久国产免费直播| 久久久久亚洲AV无码专区桃色| 久久久精品免费国产四虎| 2020久久精品国产免费| 激情伊人五月天久久综合| 精品免费久久久久久久| 精品久久久久香蕉网| 国产成人精品免费久久久久| 99久久久精品| 国产精品99久久久久久猫咪| 久久精品夜色噜噜亚洲A∨| 久久久久久噜噜精品免费直播|