-
Notifications
You must be signed in to change notification settings - Fork 41
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Such a standard is used for linux kernel compilation. Since kbd follows the linux kernel interfaces we can use the same standard for compiler. Signed-off-by: Alexey Gladkov <legion@kernel.org>
- Loading branch information
Showing
2 changed files
with
36 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
Programming Language | ||
==================== | ||
|
||
The kernel is written in the C programming language [c-language]. | ||
More precisely, the kernel is typically compiled with `gcc` [gcc] | ||
under `-std=gnu11` [gcc-c-dialect-options]: the GNU dialect of ISO C11. | ||
`clang` [clang] is also supported. | ||
|
||
This dialect contains many extensions to the language [gnu-extensions], | ||
and many of them are used within the kbd as a matter of course. | ||
|
||
Attributes | ||
--------------- | ||
|
||
One of the common extensions used throughout the kernel are | ||
attributes [gcc-attribute-syntax]. Attributes allow to introduce | ||
implementation-defined semantics to language entities (like variables, | ||
functions or types) without having to make significant syntactic changes | ||
to the language (e.g. adding a new keyword) [n2049]. | ||
|
||
In some cases, attributes are optional (i.e. a compiler not supporting them | ||
should still produce proper code, even if it is slower or does not perform | ||
as many compile-time checks/diagnostics). | ||
|
||
Please refer to `src/libcommon/compiler_attributes.h` for more information. | ||
|
||
|
||
[c-language] http://www.open-std.org/jtc1/sc22/wg14/www/standards | ||
[gcc] https://gcc.gnu.org | ||
[clang] https://clang.llvm.org | ||
[gcc-c-dialect-options] https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html | ||
[gnu-extensions] https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html | ||
[gcc-attribute-syntax] https://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html | ||
[n2049] http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2049.pdf |