C: A Humbling Language
-
Upload
guestaa63aa -
Category
Technology
-
view
2.656 -
download
0
description
Transcript of C: A Humbling Language
![Page 1: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/1.jpg)
OSDC 2007
A Humbling Language
Rusty Russell
![Page 2: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/2.jpg)
Time Better Spent
● tcmalloc– http://goog-perftools.sourceforge.net/doc/tcmalloc.html
● tdb– ftp://ftp.samba.org/pub/unpacked/tdb
● lguest– http://lguest.ozlabs.org
![Page 3: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/3.jpg)
A B C D E F GH I J K L MN O P Q R S TU V W X Y Z
![Page 4: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/4.jpg)
B C D G L MN O P R S U V W Z
![Page 5: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/5.jpg)
C L MN O S V W Z
![Page 6: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/6.jpg)
C O S
![Page 7: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/7.jpg)
C OO S
![Page 8: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/8.jpg)
C S
![Page 9: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/9.jpg)
C SS
![Page 10: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/10.jpg)
C
![Page 11: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/11.jpg)
C
![Page 12: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/12.jpg)
C
![Page 13: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/13.jpg)
C: A Historic Language
![Page 14: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/14.jpg)
http://www.thorstenkoerner.de/uploads/thompson_ritchie.jpg
![Page 15: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/15.jpg)
+=registerentry
![Page 16: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/16.jpg)
foo.c
![Page 17: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/17.jpg)
foo.c
preprocessor
![Page 18: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/18.jpg)
foo.c
preprocessor
#define FOO 17
![Page 19: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/19.jpg)
foo.c
preprocessor
#define FOO(x) (17*(x))
![Page 20: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/20.jpg)
foo.c
preprocessor
#ifdef LINUX...#else...#endif
![Page 21: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/21.jpg)
foo.c
preprocessor
#include "foo.h"
![Page 22: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/22.jpg)
foo.c
preprocessor
#include "foo.h"
foo.h
![Page 23: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/23.jpg)
foo.c
preprocessor
#include "foo.h"
foo.h#include <stdio.h>
![Page 24: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/24.jpg)
foo.c
preprocessor
#include "foo.h"
foo.h#include <stdio.h>
stdio.h
![Page 25: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/25.jpg)
foo.c
preprocessor
#include "foo.h"
foo.h#include <stdio.h>
stdio.h
# include <features.h># include <stddef.h># include <bits/types.h>#include <libio.h># include <stdarg.h>#include <bits/stdio_lim.h>#include <bits/sys_errlist.h># include <getopt.h># include <bits/stdio.h># include <bits/stdio2.h># include <bits/stdio-ldbl.h>
![Page 26: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/26.jpg)
foo.c
preprocessor
![Page 27: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/27.jpg)
foo.c
preprocessor
foo.i
![Page 28: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/28.jpg)
foo.c
preprocessor
foo.i
![Page 29: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/29.jpg)
foo.c
preprocessor
compiler
![Page 30: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/30.jpg)
foo.c
preprocessor
compiler
![Page 31: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/31.jpg)
foo.c
preprocessor
compiler
foo.s
![Page 32: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/32.jpg)
foo.c
preprocessor
compiler
assembler
![Page 33: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/33.jpg)
foo.c bar.c baz.c
preprocessor
compiler
assembler
![Page 34: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/34.jpg)
foo.c bar.c baz.c
preprocessor
compiler
assembler
linker
![Page 35: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/35.jpg)
foo.c bar.c baz.c
preprocessor
compiler
assembler
linker
foobarbaz
![Page 36: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/36.jpg)
foo.c bar.c baz.c
preprocessor
compiler
assembler
linker
foobarbaz
make
![Page 37: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/37.jpg)
foo.c bar.c baz.c
preprocessor
compiler
assembler
linker
foobarbaz
make
ccache
![Page 38: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/38.jpg)
foo.c bar.c baz.c
preprocessor
compiler
assembler
linker
foobarbaz
make
ccachedistcc
![Page 39: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/39.jpg)
foo.c bar.c baz.c
preprocessor
compiler
assembler
linker
foobarbaz
make
ccachedistcc
ccontrol
![Page 40: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/40.jpg)
foo.c bar.c baz.c
preprocessor
compiler
assembler
linker
foobarbaz
make
ccachedistcc
ccontrol
gcc *.c
![Page 41: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/41.jpg)
1988
![Page 42: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/42.jpg)
entryvoidconst
volatileenum
function prototypes
![Page 43: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/43.jpg)
1999
![Page 44: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/44.jpg)
inline
![Page 45: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/45.jpg)
foo.c bar.c baz.c
preprocessor
compiler
assembler
linker
foobarbaz
int foo(int x)...
![Page 46: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/46.jpg)
foo.c bar.c baz.c
preprocessor
compiler
assembler
linker
foobarbaz
int foo(int x)...
![Page 47: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/47.jpg)
foo.c bar.c baz.c
preprocessor
compiler
assembler
linker
foobarbaz
foo.h
![Page 48: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/48.jpg)
foo.c bar.c baz.c
preprocessor
compiler
assembler
linker
foobarbaz
foo.hinline int foo(int x)...
![Page 49: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/49.jpg)
WTF?
![Page 50: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/50.jpg)
WTF?This isn't a scripting
language!
![Page 51: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/51.jpg)
![Page 52: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/52.jpg)
![Page 53: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/53.jpg)
![Page 54: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/54.jpg)
![Page 55: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/55.jpg)
![Page 56: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/56.jpg)
Images from Wikipedia
![Page 57: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/57.jpg)
C
![Page 58: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/58.jpg)
C C
![Page 59: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/59.jpg)
C CC C
![Page 60: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/60.jpg)
Control
![Page 61: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/61.jpg)
Cycles
![Page 62: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/62.jpg)
Core
![Page 63: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/63.jpg)
Cache
![Page 64: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/64.jpg)
“Sell Me a C!”
![Page 65: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/65.jpg)
The Magic
![Page 66: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/66.jpg)
The Magic
![Page 67: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/67.jpg)
![Page 68: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/68.jpg)
struct list_head{
struct list_head *next, *prev;};
![Page 69: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/69.jpg)
struct list_head{
struct list_head *next, *prev;};
struct thing{
struct list_head elem;...
};
![Page 70: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/70.jpg)
void *kmalloc(size_t size, gfp_t flags);
![Page 71: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/71.jpg)
Just a little magic?
![Page 72: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/72.jpg)
long f(struct foo *a, struct foo *b){
return b – a;}
![Page 73: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/73.jpg)
Magic to get closer to the machine...
![Page 74: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/74.jpg)
struct elems{
unsigned int num_elems;struct elem[0];
};
![Page 75: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/75.jpg)
#define memcpy(t, f, n) \ (__builtin_constant_p(n) ? \ __constant_memcpy((t),(f),(n)) : \ __memcpy((t),(f),(n)))
![Page 76: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/76.jpg)
Magic to strengthen language features...
![Page 77: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/77.jpg)
Magic to strengthen language features...DANGER!
![Page 78: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/78.jpg)
#define new(type) \((type *)malloc(sizeof(type))
![Page 79: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/79.jpg)
#define min(x,y) ({ \typeof(x) _x = (x); \typeof(y) _y = (y); \(void) (&_x == &_y); \_x < _y ? _x : _y; })
![Page 80: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/80.jpg)
_Bool
![Page 81: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/81.jpg)
#include <stdbool.h>
![Page 82: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/82.jpg)
#include <stdbool.h>
#define bool _Bool
![Page 83: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/83.jpg)
![Page 84: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/84.jpg)
#define begin {#define end }
![Page 85: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/85.jpg)
![Page 86: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/86.jpg)
talloc(context, type)
![Page 87: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/87.jpg)
![Page 88: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/88.jpg)
![Page 89: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/89.jpg)
![Page 90: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/90.jpg)
![Page 91: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/91.jpg)
![Page 92: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/92.jpg)
![Page 93: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/93.jpg)
![Page 94: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/94.jpg)
valgrind
![Page 95: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/95.jpg)
![Page 96: C: A Humbling Language](https://reader033.fdocuments.net/reader033/viewer/2022052507/558e6edb1a28ab1f4a8b4618/html5/thumbnails/96.jpg)
C