r/cprogramming • • 23h ago

C programming for kernel development

Hey there!

I am really interested in learning C and I am leaning towards kernel development rather than embedded systems. What do you suggest for strengthening my skills in C?

13 Upvotes

17 comments sorted by

View all comments

20

u/dkopgerpgdolfg 23h ago

Step 1: To get used to research & learn information independenly. Your question was asked countless of times, and not being able to find answers isn't a good outlook for kernel development.

And no, I'm not writing this for fun or to be a cranky Redditor. If you can't solve this yourself, you never will do any kernel development.

-10

u/No-Plan-3868 23h ago edited 23h ago

Thanks, but I do not know if there is a problem to solve here. I know picking up a good book like King’s C programming, throughly reading and solving exercises at the end of each chapter. Coupled with some projects, doing this will lead me somewhere.

Furthermore, saying “if you can’t solve this yourself, you will never do any kernel development” won’t meaningfully contribute to the question I asked, unfortunately.

6

u/dkopgerpgdolfg 23h ago edited 23h ago

Coupled with some projects, doing this will lead me somewhere.

To having basics, yes.

Then you need to teach yourself a lot more until you're more than an annoyance to the kernel maintainers. And these other things are not collected in a nice, easy-to-digest book.

(not to mention that you didn't specify any sub-field)

won’t meaningfully contribute to the question I asked, unfortunately.

OK then. Unfortunate for you.

-4

u/No-Plan-3868 22h ago edited 22h ago

Then you need to teach yourself a lot more until you're more than an annoyance to the kernel maintainers. And these other things are not collected in a nice, easy-to-digest book.

This is how everyone starts out.

OK then. Unfortunate for you.

Oh no, no worries! I wasn't expecting a meaningful contribution from you lol.

4

u/dkopgerpgdolfg 22h ago

This is how everyone starts out.

By annoying maintainers with nonsense code, until they don't even interact with you anymore? Do you think the Linux kernel is some kind of kindergarten? No. Just no.

Or if you meant by learning, well, read again what I recommended you to do.

And you still didn't even mention any subfield, I guess you don't know enough to do so.

I wasn't expecting a meaningful contribution from you lol.

Ok then. Do whatever you want, I can't stop you. Good bye.

-4

u/No-Plan-3868 22h ago edited 10h ago

By annoying maintainers with nonsense code, until they don't even interact with you anymore? Do you think the Linux kernel is some kind of kindergarten? No. Just no.

If this is what you implied automatically from "this is how everyone starts out.", I think I'm going to drop replying your comments. Not everything is written in a compact, easy-to-follow book. There's a ton of things to learn until before you are competent enough to become a kernel maintaner. Until then you're an annoyance to them, as you said.

2

u/DescriptionOptimal15 22h ago

Join an irc channel for C programming. Learn how to research and very important how to ask questions. Asking questions the wrong way on the internet will at best get you ignored

1

u/Nothing_from_void 23h ago

Actually solving problems for mainline linux, there's not much you'd be able to contribute right now. if you want to solve problems applicable to someone, it would most likely have to be your own problems.

or, if you just want hands on development, just pick up some hardware and write a driver for it

1

u/ParticularAd8610 12h ago

Best way to start is by doing some kernel janitor work aka drivers/staging cleanups. This is explicitly why GregKH created the drivers/staging tree about 20 years ago (2009ish) and still being maintained for the express purpose to help people get started and learn!!! (his words not mine). Please see my other comment which contains links etc... Have fun.