Two question about kernel global function declaration and directorylayout

From: daley
Date: Mon Sep 03 2012 - 11:32:59 EST


hi, everyone, I'm a big fan of the kernel, I was always being attracted by its clean and intelligent design. I'm new to the mailing list and this is my first post. I want to ask two basic question about kernel which bother me a lot, I've googled a lot but nobody could give a suitable answer .

The first one is about global function declaration, I was confused about the usage of keyword "extern" before a global function which declared in the header file. for example,

<include/linux/kernel.h>
extern long (*panic_blink)(int state);
__printf(1, 2)
void panic(const char *fmt, ...)
__noreturn __cold;
extern void oops_enter(void);
extern void oops_exit(void);
void print_oops_end_marker(void);
extern int oops_may_print(void);
void do_exit(long error_code)
__noreturn;
void complete_and_exit(struct completion *, long)
__noreturn;

the same thing also appeared on other header files a lot. To my knowledge, there's no difference between whether has the "extern" before global function, is this due to the legacy problem or have other meaning?

The second question is why not move the *sound* directory into the *drivers* directory or put bigger subsystem out of drivers, since there are more bigger subsystems(e.g. media, scsi) than sound?

Can anybody help?
Thanks.

--
daleydeng
Beijing, China

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/