kernel module again - confused

kernel module again - confused

Post by Marius » Mon, 11 Nov 2002 09:58:31



Hi I have some errors during module compilation.
It's a char device.
My module looks like this (a small part):
.
.
.
#include <linux/fs.h>
.
.
.
static struct file_operations xxx = {
        owner:THIS_MODULE,
        open:device_open,
        release:device_release
Quote:};

.
.
but the errors during compilation point at the shown part of code.
these are the compiler(gcc) messages:

mod.c:81: variable 'xxx' has initializer but incomplete type
mod.c:82: unknown field 'owner' specified in initializer

and so on....

I'm shure that this kind of declaration of struct xxx is right in
kernels > 2.4.0. So why does the compiler complain? I'm also 100% shure that
there exist fields 'owner', 'open', etc. Just look at the code
$(your_include_dir)/linux/fs.h

Any solution? What's wrong with the initialization variable xxx of
file_operations type?

ps: I spend 16 hours reading the kernel code and docomentation and now I'm
getting a bit confused ;) that's why I decided to write this post.
Mario
--
http://linuxfocus.org

 
 
 

kernel module again - confused

Post by Kasper Dupon » Mon, 11 Nov 2002 20:01:39



> Hi I have some errors during module compilation.
> It's a char device.
> My module looks like this (a small part):
> .
> .
> .
> #include <linux/fs.h>
> .
> .
> .
> static struct file_operations xxx = {
>         owner:THIS_MODULE,

You must include <linux/module.h> for THIS_MODULE.

Quote:>         open:device_open,
>         release:device_release
> };
> .
> .
> but the errors during compilation point at the shown part of code.
> these are the compiler(gcc) messages:

> mod.c:81: variable 'xxx' has initializer but incomplete type
> mod.c:82: unknown field 'owner' specified in initializer

I get that if I leave out the KERNEL define when compiling:
http://www.kernelnewbies.org/faq/#compmod.xml

--
Kasper Dupont -- der bruger for meget tid p? usenet.

Don't do this at home kids: touch -- -rf

 
 
 

kernel module again - confused

Post by Joshua Jone » Tue, 12 Nov 2002 01:40:01



> Any solution? What's wrong with the initialization variable xxx of
> file_operations type?

Post all your #includes, as well as your compile command.  It's
difficult to tell what you've left out if we don't know what you've
included.

--
 josh(at)intmain.net  |  http://intmain.net

 109127 local keystrokes since last reboot (21 days ago)

 
 
 

kernel module again - confused

Post by Mariusz Kozlowsk » Tue, 12 Nov 2002 21:31:17




>> Any solution? What's wrong with the initialization variable xxx of
>> file_operations type?

> Post all your #includes, as well as your compile command.  It's
> difficult to tell what you've left out if we don't know what you've
> included.

Ok. here it is:
----------------------------
#include <linux/kernel.h>
#include <linux/module.h>

#if CONFIG_MODVERSIONS==1
#define MODVERSIONS
#include <linux/modversions.h>
#endif

#include <linux/fs.h>
#include <linux/wrapper.h>
#include <linux/errno.h>
----------------------------
I've also tried to include <asm/uaccess.h> but I got lots of errors that
something is wrong with this file(maybe it needs some additional flags with
gcc or so?). So now it's only this what you see above #include ....

The compile command is:
gcc -o modul_x.o -Wall -W -O2 -DMODULE -D__KERENEL__ -I/lib/modules/'uname
-r'/build/include -c my_source.c

I also tried with standard includes:
gcc -o modul_x.o -Wall -W -O2 -DMODULE -D__KERENEL__ -I/usr/include -c
my_source.c

Result is the same...

regards
Mariusz
--
http://linuxfocus.org/Polish

 
 
 

kernel module again - confused

Post by Joshua Jone » Wed, 13 Nov 2002 00:12:12



> The compile command is:
> gcc -o modul_x.o -Wall -W -O2 -DMODULE -D__KERENEL__ -I/lib/modules/'uname
> -r'/build/include -c my_source.c

Ok, this looks fine.  Have you double-checked your function signatures
to be sure they're correct? (device_open, etc.)  Just post a link to
your code, and we'll try and see if it compiles on our machines.

--
 josh(at)intmain.net  |  http://intmain.net

 114327 local keystrokes since last reboot (22 days ago)

 
 
 

kernel module again - confused

Post by Mariusz Kozlowsk » Wed, 13 Nov 2002 00:47:08


OK. It's not too long. I can post it here.
It's a simple char device. I've implemented just device_open and
device_release functions(that's just the begining). It's based on
lkmpg-1.1.0 which describes writing modules. Also I use the book "Linux
Device Drivers" by Alessandro Rubini. I'm new in writing the kernel
modules.
(kernel is 2.4.19, gcc: 2.95.3, slackware 8.1)
Ok here it is:

--------------------------------------------------------
#include <linux/kernel.h>
#include <linux/module.h>

#if CONFIG_MODVERSIONS==1
#define MODVERSIONS
#include <linux/modversions.h>
#endif

#include <linux/fs.h>
#include <linux/wrapper.h>
#include <linux/errno.h>
#include <asm/uaccess.h>

#define SUCCESS 0
#define DEVICE_NAME "my_module"
#define BUF_LEN 128
static int Device_open = 0;
static char Message[BUF_LEN];
static char *Message_ptr;

static int device_open(struct inode *inode, struct file *file)
{
    static int counter = 0;
    printk("Device: %d.%d\n", inode->i_rdev>>8, inode->i_rdev & 0xFF);
    if (Device_open)
        return -1;
    Device_open++;
    sprintf(Message, "If I told you once, I told you %d times -%s",
counter++, "Hello world\n");
    Message_ptr = Message;
    MOD_INC_USE_COUNT;
    return SUCCESS;

Quote:}

static int device_release(struct inode *inode, struct file *file)
{
    Device_open--;
    MOD_DEC_USE_COUNT;
    return SUCCESS;

Quote:}

static int Major;

/* this is the place the gcc complain about */
static struct file_operations xxx = {  
        owner:THIS_MODULE,
        open:device_open,
        release:device_release,

Quote:};

int init_module()
{
    Major = register_chrdev(0, DEVICE_NAME, &xxx);
    if (Major < 0)
    {
        printk("device registration failed");
        return Major;
    }
    printk("major nr. is %d.\n","registration succeded.", Major);
    return SUCCESS;

Quote:}

void cleanup_module()
{
    int ret;
    ret = unregister_chrdev(Major, DEVICE_NAME);
    if (ret < 0)
        printk("error in unregister_chrdev: %d\n", ret);

Quote:}

MODULE_LICENSE("GPL");

------------------------------------------------------------------------------
--
http://linuxfocus.org/Polish

 
 
 

kernel module again - confused

Post by Gordon Beato » Wed, 13 Nov 2002 02:55:52



> The compile command is:
> gcc -o modul_x.o -Wall -W -O2 -DMODULE -D__KERENEL__ -I/lib/modules/'uname
> -r'/build/include -c my_source.c

There are only two E's in "KERNEL".

/gordon

--
[ do not send me private copies of your followups ]

 
 
 

kernel module again - confused

Post by Hansjoerg Lip » Wed, 13 Nov 2002 02:55:54



> The compile command is:
> gcc -o modul_x.o -Wall -W -O2 -DMODULE -D__KERENEL__

                                           ^^^^^^^^^^^ typo!
 
 
 

kernel module again - confused

Post by Mariusz Kozlowsk » Wed, 13 Nov 2002 03:02:41




>> The compile command is:
>> gcc -o modul_x.o -Wall -W -O2 -DMODULE -D__KERENEL__
>> -I/lib/modules/'uname -r'/build/include -c my_source.c

> There are only two E's in "KERNEL".

> /gordon

right... sorry it should be __KERNEL__
and that's only typo mistake here in the post..

Mariusz
--
http://linuxfocus.org/Polish

 
 
 

kernel module again - confused

Post by Mariusz Kozlowsk » Wed, 13 Nov 2002 03:17:01




>> The compile command is:
>> gcc -o modul_x.o -Wall -W -O2 -DMODULE -D__KERENEL__

>                                            ^^^^^^^^^^^ typo!

sorry... it's only typo mistake here in my post.
it should be __KERNEL__ and that's what i give to gcc (-D__KERNEL__)

Mariusz
--
http://linuxfocus.org/Polish

 
 
 

kernel module again - confused

Post by Kasper Dupon » Wed, 13 Nov 2002 07:49:31



> and that's what i give to gcc (-D__KERNEL__)

Are you sure? The error you get really looks like you did
indeed make a mistake with the -D__KERNEL__ argument.

--
Kasper Dupont -- der bruger for meget tid p? usenet.

Don't do this at home kids: touch -- -rf

 
 
 

kernel module again - confused

Post by Mariusz Kozlowsk » Wed, 13 Nov 2002 08:31:29




>> and that's what i give to gcc (-D__KERNEL__)

> Are you sure? The error you get really looks like you did
> indeed make a mistake with the -D__KERNEL__ argument.

:) I'm 100% shure...

I'm still google'ing and looking for solutioin.
The point is that my module compiles ok (and is loadable and so on)
when I don't use the include file linux/fs.h and the structure from this
file: file_operations. That's the point where all crushes down.

ps: please take a look at my post above, try to compile the given code and
post what's going on.

regards
Mariusz
--
http://linuxfocus.org/Polish

 
 
 

kernel module again - confused

Post by Hansjoerg Lip » Wed, 13 Nov 2002 10:17:33



> ps: please take a look at my post above, try to compile the given code
> and post what's going on.

It compiles well, here (gcc 2.95.3, Linux 2.4.18).
Your compiler messages mean, that struct file_operations is not defined.
As struct file_operations is defined in <linux/fs.h> unless __KERNEL__
is defined, I still doubt you passed -D__KERNEL__ to the compiler.

Could you either post the Makefile or the _exact_ gcc call and post all
compiler messages you get (copy&paste both the gcc/make call and the output
from the console; use the source code you posted before - which seems to
be a shortened version)?

i.e.

In file included from /usr/src/linux/include/linux/list.h:144,
                 from /usr/src/linux/include/linux/module.h:12,
                 from test.c:2:
/usr/src/linux/include/linux/prefetch.h: In function `prefetch':
/usr/src/linux/include/linux/prefetch.h:43: warning: unused parameter `x'
/usr/src/linux/include/linux/prefetch.h: In function `prefetchw':
/usr/src/linux/include/linux/prefetch.h:48: warning: unused parameter `x'
In file included from /usr/src/linux/include/linux/fs.h:12,
                 from test.c:9:
/usr/src/linux/include/linux/wait.h: In function `__remove_wait_queue':
/usr/src/linux/include/linux/wait.h:223: warning: unused parameter `head'
In file included from /usr/src/linux/include/linux/sched.h:27,
                 from /usr/src/linux/include/asm/uaccess.h:8,
                 from test.c:12:
/usr/src/linux/include/linux/signal.h: In function `sigorsets':
/usr/src/linux/include/linux/signal.h:108: warning: comparison of unsigned expression < 0 is always false
/usr/src/linux/include/linux/signal.h: In function `sigandsets':
/usr/src/linux/include/linux/signal.h:111: warning: comparison of unsigned expression < 0 is always false
/usr/src/linux/include/linux/signal.h: In function `signandsets':
/usr/src/linux/include/linux/signal.h:114: warning: comparison of unsigned expression < 0 is always false
/usr/src/linux/include/linux/signal.h: In function `signotset':
/usr/src/linux/include/linux/signal.h:140: warning: comparison of unsigned expression < 0 is always false
In file included from /usr/src/linux/include/asm/uaccess.h:8,
                 from test.c:12:
/usr/src/linux/include/linux/sched.h: In function `task_unlock':
/usr/src/linux/include/linux/sched.h:972: warning: unused parameter `p'
In file included from test.c:12:
/usr/src/linux/include/asm/uaccess.h: In function `verify_area':
/usr/src/linux/include/asm/uaccess.h:62: warning: unused parameter `type'
test.c: In function `device_open':
test.c:21: warning: unused parameter `file'
test.c: In function `device_release':
test.c:35: warning: unused parameter `inode'
test.c:35: warning: unused parameter `file'
test.c: At top level:
test.c:49: warning: missing initializer
test.c:49: warning: (near initialization for `xxx.llseek')
test.c: In function `init_module':
test.c:59: warning: int format, pointer arg (arg 2)
test.c:59: warning: too many arguments for format

 
 
 

kernel module again - confused

Post by Joshua Jone » Wed, 13 Nov 2002 14:38:59



> OK. It's not too long. I can post it here.

This compiled a module fine on my machine, with a few warnings.
I didn't try to load it of course, but it does compile.
I'm using gcc 2.95.4, stock 2.4.18 kernel.

--
 josh(at)intmain.net  |  http://intmain.net

 119954 local keystrokes since last reboot (23 days ago)

 
 
 

kernel module again - confused

Post by Mariusz Kozlowsk » Wed, 13 Nov 2002 18:12:52


That's exactly what I do on the source posted before:

bash-2.05a$ gcc -o my_mod.o -O2 -DMODULE -D__KERNEL__ -I
/usr/src/linux/include -c sent.c
.
./* lots of output*/
.
/usr/src/linux/include/linux/affs_fs_sb.h:37: parse error before `}'
In file included from /usr/src/linux/include/linux/ufs_fs_sb.h:17,
                 from /usr/src/linux/include/linux/fs.h:691,
                 from sent.c:13:
/usr/src/linux/include/linux/ufs_fs.h:526: parse error before
`ufs_inode_by_name'
/usr/src/linux/include/linux/ufs_fs.h:526: warning: data definition has no
type or storage class
In file included from /usr/src/linux/include/linux/smb_fs_sb.h:15,
                 from /usr/src/linux/include/linux/fs.h:694,
                 from sent.c:13:
/usr/src/linux/include/linux/smb.h:84: parse error before `nlink_t'
/usr/src/linux/include/linux/smb.h:84: warning: no semicolon at end of
struct or union
/usr/src/linux/include/linux/smb.h:85: conflicting types for `f_uid'
/usr/src/linux/include/linux/fs.h:533: previous declaration of `f_uid'
/usr/src/linux/include/linux/smb.h:85: warning: data definition has no type
or storage class
/usr/src/linux/include/linux/smb.h:86: parse error before `f_gid'
/usr/src/linux/include/linux/smb.h:86: conflicting types for `f_gid'
/usr/src/linux/include/linux/fs.h:533: previous declaration of `f_gid'
/usr/src/linux/include/linux/smb.h:86: warning: data definition has no type
or storage class
/usr/src/linux/include/linux/smb.h:88: parse error before `f_size'
/usr/src/linux/include/linux/smb.h:88: warning: data definition has no type
or storage class
/usr/src/linux/include/linux/smb.h:89: parse error before `f_atime'
/usr/src/linux/include/linux/smb.h:89: warning: data definition has no type
or storage class
/usr/src/linux/include/linux/smb.h:90: parse error before `f_mtime'
/usr/src/linux/include/linux/smb.h:90: warning: data definition has no type
or storage class
/usr/src/linux/include/linux/smb.h:91: parse error before `f_ctime'
/usr/src/linux/include/linux/smb.h:91: warning: data definition has no type
or storage class
/usr/src/linux/include/linux/smb.h:94: parse error before `}'
In file included from /usr/src/linux/include/linux/fs.h:694,
                 from sent.c:13:
/usr/src/linux/include/linux/smb_fs_sb.h:34: parse error before `pid_t'
/usr/src/linux/include/linux/smb_fs_sb.h:34: warning: no semicolon at end of
struct or union
/usr/src/linux/include/linux/smb_fs_sb.h:59: parse error before `}'
/usr/src/linux/include/linux/smb_fs_sb.h: In function `smb_lock_server':
/usr/src/linux/include/linux/smb_fs_sb.h:65: dereferencing pointer to
incomplete type
/usr/src/linux/include/linux/smb_fs_sb.h: In function `smb_unlock_server':
/usr/src/linux/include/linux/smb_fs_sb.h:71: dereferencing pointer to
incomplete type
In file included from /usr/src/linux/include/linux/fs.h:695,
                 from sent.c:13:
/usr/src/linux/include/linux/hfs_fs_sb.h: At top level:
/usr/src/linux/include/linux/hfs_fs_sb.h:19: parse error before `ino_t'
/usr/src/linux/include/linux/hfs_fs_sb.h:48: parse error before `uid_t'
/usr/src/linux/include/linux/hfs_fs_sb.h:48: warning: no semicolon at end of
struct or union
/usr/src/linux/include/linux/hfs_fs_sb.h:49: warning: data definition has no
type or storage class
/usr/src/linux/include/linux/hfs_fs_sb.h:51: parse error before `}'
In file included from /usr/src/linux/include/linux/fs.h:696,
                 from sent.c:13:
/usr/src/linux/include/linux/adfs_fs_sb.h:23: parse error before `uid_t'
/usr/src/linux/include/linux/adfs_fs_sb.h:23: warning: no semicolon at end
of struct or union
/usr/src/linux/include/linux/adfs_fs_sb.h:24: warning: data definition has
no type or storage class
/usr/src/linux/include/linux/adfs_fs_sb.h:35: conflicting types for
`s_namelen'
/usr/src/linux/include/linux/sysv_fs_sb.h:51: previous declaration of
`s_namelen'
/usr/src/linux/include/linux/adfs_fs_sb.h:36: parse error before `}'
In file included from /usr/src/linux/include/linux/fs.h:698,
                 from sent.c:13:
/usr/src/linux/include/linux/reiserfs_fs_sb.h:261: parse error before
`time_t'
/usr/src/linux/include/linux/reiserfs_fs_sb.h:261: warning: no semicolon at
end of struct or union
/usr/src/linux/include/linux/reiserfs_fs_sb.h:268: parse error before `}'
/usr/src/linux/include/linux/reiserfs_fs_sb.h:293: parse error before
`time_t'
/usr/src/linux/include/linux/reiserfs_fs_sb.h:293: warning: no semicolon at
end of struct or union
/usr/src/linux/include/linux/reiserfs_fs_sb.h:314: conflicting types for
`j_list_bitmap'
/usr/src/linux/include/linux/reiserfs_fs_sb.h:262: previous declaration of
`j_list_bitmap'
/usr/src/linux/include/linux/reiserfs_fs_sb.h:320: parse error before `}'
In file included from /usr/src/linux/include/linux/fs.h:700,
                 from sent.c:13:
/usr/src/linux/include/linux/udf_fs_sb.h:95: parse error before `mode_t'
/usr/src/linux/include/linux/udf_fs_sb.h:95: warning: no semicolon at end of
struct or union
/usr/src/linux/include/linux/udf_fs_sb.h:96: warning: data definition has no
type or storage class
/usr/src/linux/include/linux/udf_fs_sb.h:97: parse error before `s_uid'
/usr/src/linux/include/linux/udf_fs_sb.h:97: warning: data definition has no
type or storage class
/usr/src/linux/include/linux/udf_fs_sb.h:100: parse error before
`s_recordtime'
/usr/src/linux/include/linux/udf_fs_sb.h:100: warning: data definition has
no type or storage class
/usr/src/linux/include/linux/udf_fs_sb.h:116: parse error before `}'
In file included from /usr/src/linux/include/linux/fs.h:701,
                 from sent.c:13:
/usr/src/linux/include/linux/ncp_fs_sb.h:63: parse error before `size_t'
/usr/src/linux/include/linux/ncp_fs_sb.h:63: warning: no semicolon at end of
struct or union
/usr/src/linux/include/linux/ncp_fs_sb.h:63: warning: no semicolon at end of
struct or union
/usr/src/linux/include/linux/ncp_fs_sb.h:66: parse error before `}'
/usr/src/linux/include/linux/ncp_fs_sb.h:66: warning: data definition has no
type or storage class
/usr/src/linux/include/linux/ncp_fs_sb.h:69: parse error before `size_t'
/usr/src/linux/include/linux/ncp_fs_sb.h:69: warning: no semicolon at end of
struct or union
/usr/src/linux/include/linux/ncp_fs_sb.h:70: conflicting types for `data'
/usr/src/linux/include/linux/coda.h:417: previous declaration of `data'
/usr/src/linux/include/linux/ncp_fs_sb.h:71: parse error before `}'
/usr/src/linux/include/linux/ncp_fs_sb.h:71: warning: data definition has no
type or storage class
/usr/src/linux/include/linux/ncp_fs_sb.h:81: conflicting types for `flags'
/usr/src/linux/include/linux/coda.h:678: previous declaration of `flags'
/usr/src/linux/include/linux/ncp_fs_sb.h:82: parse error before `}'
/usr/src/linux/include/linux/ncp_fs_sb.h: In function `ncp_conn_valid':
/usr/src/linux/include/linux/ncp_fs_sb.h:94: dereferencing pointer to
incomplete type
/usr/src/linux/include/linux/ncp_fs_sb.h: In function `ncp_invalidate_conn':
/usr/src/linux/include/linux/ncp_fs_sb.h:99: dereferencing pointer to
incomplete type
In file included from /usr/src/linux/include/linux/fs.h:702,
                 from sent.c:13:
/usr/src/linux/include/linux/usbdev_fs_sb.h: At top level:
/usr/src/linux/include/linux/usbdev_fs_sb.h:4: parse error before `uid_t'
/usr/src/linux/include/linux/usbdev_fs_sb.h:4: warning: no semicolon at end
of struct or union
/usr/src/linux/include/linux/usbdev_fs_sb.h:5: warning: data definition has
no type or storage class
/usr/src/linux/include/linux/usbdev_fs_sb.h:7: parse error before `busuid'
/usr/src/linux/include/linux/usbdev_fs_sb.h:7: warning: data definition has
no type or storage class
/usr/src/linux/include/linux/usbdev_fs_sb.h:8: parse error before `busgid'
/usr/src/linux/include/linux/usbdev_fs_sb.h:8: warning: data definition has
no type or storage class
/usr/src/linux/include/linux/usbdev_fs_sb.h:10: parse error before `listuid'
/usr/src/linux/include/linux/usbdev_fs_sb.h:10: warning: data definition has
no type or storage class
/usr/src/linux/include/linux/usbdev_fs_sb.h:11: parse error before `listgid'
/usr/src/linux/include/linux/usbdev_fs_sb.h:11: warning: data definition has
no type or storage class
/usr/src/linux/include/linux/usbdev_fs_sb.h:13: parse error before `}'
In file included from sent.c:13:
/usr/src/linux/include/linux/fs.h:735: field `s_dquot' has incomplete type
/usr/src/linux/include/linux/fs.h:739: field `ext2_sb' has incomplete type
/usr/src/linux/include/linux/fs.h:740: field `ext3_sb' has incomplete type
/usr/src/linux/include/linux/fs.h:741: field `hpfs_sb' has incomplete type
/usr/src/linux/include/linux/fs.h:742: field `ntfs_sb' has incomplete type
/usr/src/linux/include/linux/fs.h:744: field `isofs_sb' has incomplete type
/usr/src/linux/include/linux/fs.h:746: field `sysv_sb' has incomplete type
/usr/src/linux/include/linux/fs.h:747: field `affs_sb' has incomplete type
/usr/src/linux/include/linux/fs.h:752: field `smbfs_sb' has incomplete type
/usr/src/linux/include/linux/fs.h:753: field `hfs_sb' has incomplete type
/usr/src/linux/include/linux/fs.h:754: field `adfs_sb' has incomplete type
/usr/src/linux/include/linux/fs.h:758: field `udf_sb' has incomplete type
/usr/src/linux/include/linux/fs.h:759: field `ncpfs_sb' has incomplete type
/usr/src/linux/include/linux/fs.h:760: field `usbdevfs_sb' has incomplete
type
/usr/src/linux/include/linux/fs.h:786: parse error before `dev_t'
/usr/src/linux/include/linux/fs.h:812: parse error before `loff_t'
/usr/src/linux/include/linux/fs.h:830: parse error before `loff_t'
/usr/src/linux/include/linux/fs.h:830: warning: no semicolon at end of
struct or union
/usr/src/linux/include/linux/fs.h:831: parse error before `*'
/usr/src/linux/include/linux/fs.h:831: parse error before `size_t'
/usr/src/linux/include/linux/fs.h:831: `ssize_t' declared as function
returning a function
/usr/src/linux/include/linux/fs.h:831: warning: data definition has no type
or storage class
/usr/src/linux/include/linux/fs.h:832: ...

read more »

 
 
 

1. Kernel 2.5.59 again - no modules are loaded

Hi,

after i solved now my input/output problem with kernel 2.5.59 i have now a
much more important problem:

my kernel does not load any of my modules. the /var/log/boot.msg says "No
module symbols loaded - kernel modules not enabled." but i enabled them in
the menuconfig and compiled and installed them correctly...

what did i wrong?

thanks a lot
  NetRacer

2. PPP Broken in later kernels?

3. Opening a kernel module from another kernel module

4. HELP!!! gcc2.2.2 chokes on scsi.c

5. Ft. Worth - Linux Kernel Module Programmer - Unix kernel modules & Unix device drivers

6. Can linux run on Pentium?

7. kernel debugger again and again (sorry)

8. Streams driver timeouts taking 100ms

9. Building Glibc 2.1.2 again, again and again

10. Splitting c.o.l Again, and Again, and AGAIN!!!

11. Again, again, and again

12. LinuxMall spams again and again and again...

13. aha1542, module vs kernel, kernel doesn't work, need kernel