Slideshow transcript
Slide 1: OSDC 2007 A Humbling Language Rusty Russell
Slide 2: 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 –
Slide 3: ABCDEFG HIJKLM NOPQRST UVWXYZ
Slide 4: BCD G LM NOP RS UVW Z
Slide 5: C LM NO S VW Z
Slide 6: C O S
Slide 7: C O S
Slide 8: C S
Slide 9: C S
Slide 10: C
Slide 11: C
Slide 12: C
Slide 13: C: A Historic Language
Slide 14: http://www.thorstenkoerner.de/uploads/thompson_ritchie.jpg
Slide 15: += register entry
Slide 16: foo.c
Slide 17: foo.c preprocessor
Slide 18: foo.c #define FOO 17 preprocessor
Slide 19: foo.c #define FOO(x) (17*(x)) preprocessor
Slide 20: foo.c #ifdef LINUX ... #else preprocessor ... #endif
Slide 21: foo.c #include "foo.h" preprocessor
Slide 22: foo.c #include "foo.h" foo.h preprocessor
Slide 23: foo.c #include "foo.h" foo.h preprocessor #include <stdio.h>
Slide 24: foo.c #include "foo.h" foo.h preprocessor #include <stdio.h> stdio.h
Slide 25: foo.c #include "foo.h" foo.h preprocessor #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>
Slide 26: foo.c preprocessor
Slide 27: foo.c preprocessor
Slide 28: foo.c preprocessor foo.i
Slide 29: foo.c preprocessor compiler
Slide 30: foo.c preprocessor compiler
Slide 31: foo.c preprocessor compiler foo.s
Slide 32: foo.c preprocessor compiler assembler
Slide 33: foo.c bar.c baz.c preprocessor compiler assembler
Slide 34: foo.c bar.c baz.c preprocessor compiler assembler linker
Slide 35: foo.c bar.c baz.c preprocessor compiler assembler linker foobarbaz
Slide 36: foo.c bar.c baz.c make preprocessor compiler assembler linker foobarbaz
Slide 37: foo.c bar.c baz.c make preprocessor compiler ccache assembler linker foobarbaz
Slide 38: foo.c bar.c baz.c make preprocessor compiler ccache distcc assembler linker foobarbaz
Slide 39: foo.c bar.c baz.c make preprocessor ccontrol compiler ccache distcc assembler linker foobarbaz
Slide 40: foo.c bar.c baz.c make gcc *.c preprocessor ccontrol compiler ccache distcc assembler linker foobarbaz
Slide 41: 1988
Slide 42: entry void const volatile enum function prototypes
Slide 43: 1999
Slide 44: inline
Slide 45: foo.c bar.c baz.c preprocessor int compiler foo(int x)... assembler linker foobarbaz
Slide 46: foo.c bar.c baz.c preprocessor int compiler foo(int x)... assembler linker foobarbaz
Slide 47: foo.c bar.c baz.c preprocessor foo.h compiler assembler linker foobarbaz
Slide 48: foo.c bar.c baz.c preprocessor foo.h inline int foo(int x)... compiler assembler linker foobarbaz
Slide 49: WTF?
Slide 50: WTF? This isn't a scripting language!
Slide 56: Images from Wikipedia
Slide 57: C
Slide 58: C C
Slide 59: C C CC
Slide 60: C ontrol
Slide 61: C ycles
Slide 62: C ore
Slide 63: C ache
Slide 64: “Sell Me a C!”
Slide 65: The Magic
Slide 66: The Magic
Slide 68: struct list_head { struct list_head *next, *prev; };
Slide 69: struct list_head { struct list_head *next, *prev; }; struct thing { struct list_head elem; ... };
Slide 70: void *kmalloc(size_t size, gfp_t flags);
Slide 71: Just a little magic?
Slide 72: long f(struct foo *a, struct foo *b) { return b – a; }
Slide 73: Magic to get closer to the machine...
Slide 74: struct elems { unsigned int num_elems; struct elem[0]; };
Slide 75: #define memcpy(t, f, n) (__builtin_constant_p(n) ? __constant_memcpy((t),(f),(n)) : __memcpy((t),(f),(n)))
Slide 76: Magic to strengthen language features...
Slide 77: DANGER! Magic to strengthen language features...
Slide 78: #define new(type) ((type *)malloc(sizeof(type))
Slide 79: #define min(x,y) ({ typeof(x) _x = (x); typeof(y) _y = (y); (void) (&_x == &_y); _x < _y ? _x : _y; })
Slide 80: _Bool
Slide 81: #include <stdbool.h>
Slide 82: #include <stdbool.h> #define bool _Bool
Slide 84: #define begin { #define end }
Slide 86: talloc(context, type)
Slide 94: valgrind
Slide 96: C



Add a comment on Slide 1
If you have a SlideShare account, login to comment; else you can comment as a guest- Favorites & Groups
Showing 1-50 of 1 (more)