2010-08-21 17:56:22

by Someone Something

[permalink] [raw]
Subject: How the heck do I get started?

Hello everyone,

I am a pretty so so C programmer (I've written small networked stuff,
a simple game engine, GUI tools etc.), I just do programming as a
hobby and I'm a middle school student. I am interested in low level
programming and I dabble in assembly, so, I downloaded the latest
kernel source and the sheer size of it just blows my mind. How should
I get started hacking on it? Writing modules, or just browsing through
the code and trying to understand it? Any books you guys recommend?
I'm pretty sure that you're sick and tired of these newb questions,
so, I actually did some research, and I do have a few concrete
questions.
1) Does the linux kernel use pages AND segments? Or just one of them?
If its pages, how does it deal with the wasted memory at the end of
each page? Very small pages?
2) I looked at the 0.01 kernel and it has this weird mix of nasm and
gas syntax for its assembly. Why's that?
3) Is there some kind of tracker for the kernel where it lists bugs and stuff?
4) If I do have a patch I'd like to submit, how would I do this?


Thanks a lot,
Dhaivat


2010-08-21 20:47:59

by Jiri Slaby

[permalink] [raw]
Subject: Re: How the heck do I get started?

On 08/21/2010 07:56 PM, Someone Something wrote:
> How should
> I get started hacking on it? Writing modules, or just browsing through
> the code and trying to understand it? Any books you guys recommend?

Go through
Documentation/kernel-docs.txt
and
http://kernelnewbies.org/KernelJanitors

> 1) Does the linux kernel use pages AND segments? Or just one of them?

Speaking of x86 32-bit, both. Segments are a whole space 0-4G though, so
fairly unused except some small kind of protection. x86 64-bit removed
segmenting support.

> If its pages, how does it deal with the wasted memory at the end of
> each page? Very small pages?

Which wasted memory? No memory is wasted. If code needs memory <
PAGE_SIZE, one of slab allocator is used.

> 2) I looked at the 0.01 kernel and it has this weird mix of nasm and
> gas syntax for its assembly. Why's that?

0.01 is the ancient history, who cares?

> 3) Is there some kind of tracker for the kernel where it lists bugs and stuff?

bugzilla.kernel.org
And some reports are reported solely to this (or other) ML.

> 4) If I do have a patch I'd like to submit, how would I do this?

See
Documentation/SubmittingPatches

And Documentation/00-INDEX is of interest usually.

hth,
--
js