/trunk/kernel/generic/src/proc/thread.c |
---|
660,7 → 660,7 |
thread_ready(t); |
if (uspace_thread_id != NULL) |
return (unative_t) copy_to_uspace(uspace_thread_id, &t->tid, |
sizeof(t->tid)); |
sizeof(t->tid)); |
else |
return 0; |
} else |
/trunk/uspace/tester/thread/thread1.c |
---|
33,6 → 33,7 |
#include <thread.h> |
#include <stdio.h> |
#include <unistd.h> |
#include <futex.h> |
#include "../tester.h" |
static atomic_t finish; |
39,13 → 40,18 |
static atomic_t threads_finished; |
static bool sh_quiet; |
static atomic_t srlz = FUTEX_INITIALIZER; |
static void threadtest(void *data) |
{ |
thread_detach(thread_get_id()); |
while (atomic_get(&finish)) { |
if (!sh_quiet) |
if (!sh_quiet) { |
futex_down(&srlz); |
printf("%llu ", thread_get_id()); |
futex_up(&srlz); |
} |
usleep(100000); |
} |
atomic_inc(&threads_finished); |
68,8 → 74,11 |
total++; |
} |
if (!quiet) |
if (!quiet) { |
futex_down(&srlz); |
printf("Running threads for 10 seconds...\n"); |
futex_up(&srlz); |
} |
sleep(10); |
atomic_set(&finish, 0); |
/trunk/uspace/tester/fault/fault1.c |
---|
33,5 → 33,5 |
{ |
((int *)(0))[1] = 0; |
return "Written to NULL"; |
return "Survived write to NULL"; |
} |
/trunk/uspace/tester/fault/fault2.c |
---|
36,5 → 36,5 |
var1 = *((int *) (((char *) (&var)) + 1)); |
return "Done unaligned read"; |
return "Survived unaligned read"; |
} |
/trunk/uspace/libc/generic/io/vprintf.c |
---|
36,10 → 36,7 |
#include <stdio.h> |
#include <unistd.h> |
#include <io/printf_core.h> |
#include <futex.h> |
atomic_t printf_futex = FUTEX_INITIALIZER; |
static int vprintf_write(const char *str, size_t count, void *unused) |
{ |
return write(1, str, count); |
54,9 → 51,7 |
{ |
struct printf_spec ps = {(int(*)(void *, size_t, void *)) vprintf_write, NULL}; |
futex_down(&printf_futex); |
int ret = printf_core(fmt, &ps, ap); |
futex_up(&printf_futex); |
return ret; |
} |
/trunk/uspace/libc/generic/io/printf_core.c |
---|
40,6 → 40,7 |
#include <io/printf_core.h> |
#include <ctype.h> |
#include <string.h> |
#include <async.h> /* for pseudo thread serialization */ |
#define __PRINTF_FLAG_PREFIX 0x00000001 /**< show prefixes 0x or 0*/ |
#define __PRINTF_FLAG_SIGNED 0x00000002 /**< signed / unsigned number */ |
443,6 → 444,9 |
int width, precision; |
uint64_t flags; |
/* Don't let other pseudo threads interfere. */ |
async_serialize_start(); |
counter = 0; |
while ((c = fmt[i])) { |
674,8 → 678,10 |
counter += retval; |
} |
async_serialize_end(); |
return counter; |
minus_out: |
async_serialize_end(); |
return -counter; |
} |
/trunk/uspace/libc/arch/sparc64/src/thread_entry.s |
---|
34,7 → 34,7 |
# |
# |
__thread_entry: |
sethi %hi(_gp), %l7 |
sethi %hi(_gp), %l7 |
call __thread_main ! %o0 contains address of uarg |
or %l7, %lo(_gp), %l7 |