• <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 閱讀(479) 評論(0)  編輯 收藏 引用 所屬分類: linux kernel
            <2010年4月>
            28293031123
            45678910
            11121314151617
            18192021222324
            2526272829301
            2345678

            常用鏈接

            留言簿(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

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            大美女久久久久久j久久| 久久久久久国产精品免费无码 | 久久无码一区二区三区少妇 | 久久精品亚洲欧美日韩久久| 欧美与黑人午夜性猛交久久久| 亚洲国产精品无码久久久秋霞2 | 精品国产乱码久久久久久浪潮| 国产免费久久精品99re丫y| 国产精品美女久久久m| 亚洲天堂久久久| 国产精品成人久久久久久久| 久久久久女人精品毛片| 亚洲精品美女久久久久99小说 | 国内精品久久国产大陆| 狠狠色婷婷久久综合频道日韩| 久久精品成人影院| 中文字幕久久欲求不满| 欧美熟妇另类久久久久久不卡| 久久精品亚洲福利| 国产激情久久久久影院| 九九久久99综合一区二区| 无码专区久久综合久中文字幕| 久久夜色精品国产| 日韩亚洲国产综合久久久| 久久久人妻精品无码一区| 青青青国产成人久久111网站| 久久婷婷五月综合97色一本一本| 久久精品成人欧美大片| 伊人久久大香线蕉综合Av| 99久久免费国产精品特黄| 久久久久av无码免费网| 99久久国产宗和精品1上映| 精品久久久久久久国产潘金莲| 亚洲精品乱码久久久久久蜜桃| 亚洲另类欧美综合久久图片区| 久久久久亚洲?V成人无码| 色偷偷88欧美精品久久久| 久久91精品国产91| 久久中文骚妇内射| 91精品国产91热久久久久福利| 99久久精品免费看国产|