I'm looking for some article, tutorial or book on how to structure C code for large programs. Best would be something aimed at the kernel-level ("kernel" not restricted to the Linux kernel itself), taking into account the various low-level mechanisms that exist when designing something (e.g. threads, signals) focusing mainly on design and not on the semantics of the code. But even something at the application-level would be useful for me. I am not in any position to write production-quality code, but would like to learn better practices for maintainability and creating context between functionality needs and implementation techniques. I'm not looking for something that explains the semantics of C, meaning pointers, bitmasks, function pointers, but rather something that explains how their combination can be used to accomplish certain tasks. An example is polymorphism, which is enabled through function pointer tables, or the use of setjmp() and longjmp() to enable exception handling.
Has anyone come across such a document? I've found a few things online, but they're not as comprehensive as I'd like, such as:
http://www.freetype.org/david/reliable-c.html
http://www.cprogramming.com/tutorial.html
*Edit, maybe this thread would be better of in the programming forum... *sigh*
-Alex