view extras/mini-os/include/posix/pthread.h @ 17042:a905c582a406

Add stubdomain support. See stubdom/README for usage details.

arch_limits.h so as to permit getting them from there without
pulling all the internal Mini-OS defines.
- Setup a xen-elf cross-compilation environment in stubdom/cross-root
- Add a POSIX layer on top of Mini-OS by linking against the newlib C
library and lwIP, and implementing the Unixish part in mini-os/lib/sys.c
- Cross-compile zlib and libpci too.
- Add an xs.h-compatible layer on top of Mini-OS' xenbus.
- Cross-compile libxc with an additional xc_minios.c and a few things
- Cross-compile ioemu with an additional block-vbd, but without sound,
tpm and other details. A few hacks are needed:
- Align ide and scsi buffers at least on sector size to permit
direct transmission to the block backend. While we are at it, just
page-align it to possibly save a segment. Also, limit the scsi
buffer size because of limitations of the block paravirtualization
- Allocate big tables dynamically rather that letting them go to
bss: when Mini-OS gets installed in memory, bss is not lazily
allocated, and doing so during Mini-OS is unnecessarily trick while
we can simply use malloc.
- Had to change the Mini-OS compilation somehow, so as to export
Mini-OS compilation flags to the Makefiles of libxc and ioemu.

Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
author Keir Fraser <keir.fraser@citrix.com>
date Tue Feb 12 14:35:39 2008 +0000 (2008-02-12)
children f05795acfca9
line source
1 #ifndef _POSIX_PTHREAD_H
2 #define _POSIX_PTHREAD_H
4 /* Let's be single-threaded for now. */
6 typedef void *pthread_key_t;
7 typedef struct {} pthread_mutex_t, pthread_once_t;
9 #define PTHREAD_ONCE_INIT {}
10 static inline int pthread_mutex_lock(pthread_mutex_t *mutex) { return 0; }
11 static inline int pthread_mutex_unlock(pthread_mutex_t *mutex) { return 0; }
12 static inline int pthread_key_create(pthread_key_t *key, void (*destr_function)(void*)) { *key = NULL; return 0; }
13 static inline int pthread_setspecific(pthread_key_t *key, const void *pointer) { *key = (void*) pointer; return 0; }
14 static inline void *pthread_getspecific(pthread_key_t *key) { return *key; }
15 static inline int pthread_once(pthread_once_t *once_control, void (*init_routine)(void)) { init_routine(); return 0; }
17 #define __thread
19 #endif /* _POSIX_PTHREAD_H */