• <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 閱讀(469) 評論(0)  編輯 收藏 引用 所屬分類: linux kernel
            <2010年7月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(10)

            隨筆分類(307)

            隨筆檔案(297)

            algorithm

            Books_Free_Online

            C++

            database

            Linux

            Linux shell

            linux socket

            misce

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

            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

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            国产精品无码久久四虎| 亚洲午夜精品久久久久久浪潮| 18禁黄久久久AAA片| 国产真实乱对白精彩久久| 97久久国产亚洲精品超碰热| 久久精品毛片免费观看| 人妻精品久久无码专区精东影业| 久久亚洲精品无码aⅴ大香| 一本大道久久香蕉成人网| 亚洲精品无码久久不卡| 久久综合偷偷噜噜噜色| 2021国内久久精品| 久久久久亚洲av成人网人人软件| 狠狠综合久久综合88亚洲| 香蕉久久av一区二区三区| 99久久99久久久精品齐齐 | 久久青青草原精品国产软件 | 99久久综合国产精品二区| 国产精品99久久久久久董美香| 国产高潮国产高潮久久久91 | 久久ww精品w免费人成| 国内精品久久久久久99蜜桃| 久久久久中文字幕| 午夜精品久久久久成人| 亚洲中文字幕无码一久久区| 少妇内射兰兰久久| 91精品国产色综久久| 香蕉久久夜色精品国产2020| 久久香蕉国产线看观看精品yw| 亚洲国产精品久久久久婷婷软件 | 狠狠色综合网站久久久久久久高清| 亚洲国产精品久久久天堂| 色成年激情久久综合| 久久久久久久97| 国产精品综合久久第一页| 伊人久久大香线蕉AV色婷婷色| 国产 亚洲 欧美 另类 久久| 伊人久久无码精品中文字幕| 99久久成人国产精品免费| 成人综合久久精品色婷婷| 国产AV影片久久久久久|