feat: better scheduling for fibo
This commit is contained in:
parent
3475ce4e8f
commit
7f1aa05f3e
2
Makefile
2
Makefile
@ -109,7 +109,7 @@ ${check_targets}: check_%: ${build_dir}/%
|
|||||||
$^ ${check_argv}
|
$^ ${check_argv}
|
||||||
|
|
||||||
${bins_target}: ${build_dir}/%: ${objs} ${build_dir}/${tst_dir}/%.o
|
${bins_target}: ${build_dir}/%: ${objs} ${build_dir}/${tst_dir}/%.o
|
||||||
${CC} -o $@ $^ ${CFLAGS} ./lib/libmimalloc ${LDFLAGS}
|
${CC} -o $@ $^ ${CFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
${build_dir}/libthread.so: ${objs}
|
${build_dir}/libthread.so: ${objs}
|
||||||
${CC} -o $@ -shared $^ ${CFLAGS} ${LDFLAGS}
|
${CC} -o $@ -shared $^ ${CFLAGS} ${LDFLAGS}
|
||||||
|
@ -17,7 +17,8 @@
|
|||||||
#define IS_WAITING(entry) (entry->status & WAITING)
|
#define IS_WAITING(entry) (entry->status & WAITING)
|
||||||
#define GET_LAST_WAITED_THREAD(entry) (entry->last_waited ? entry->last_waited->last_thread : NULL)
|
#define GET_LAST_WAITED_THREAD(entry) (entry->last_waited ? entry->last_waited->last_thread : NULL)
|
||||||
#define WAITED 0x8
|
#define WAITED 0x8
|
||||||
#define MUTEX_WAITING 0xf0
|
#define YIELD (char) 0x20
|
||||||
|
#define MUTEX_WAITING (char) 0x10
|
||||||
#define IS_WAITED(entry) (entry->status & WAITED)
|
#define IS_WAITED(entry) (entry->status & WAITED)
|
||||||
#define IS_MUTEX_WAITING(entry) (entry->status & MUTEX_WAITING)
|
#define IS_MUTEX_WAITING(entry) (entry->status & MUTEX_WAITING)
|
||||||
|
|
||||||
@ -79,6 +80,10 @@ int thread_yield(void)
|
|||||||
if (TAILQ_EMPTY(&head)) {
|
if (TAILQ_EMPTY(&head)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
if (!(running->status & YIELD)) {
|
||||||
|
running->status |= YIELD;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Current strategy :
|
/* Current strategy :
|
||||||
* if we have checked the number of threads then keep the running one
|
* if we have checked the number of threads then keep the running one
|
||||||
|
Loading…
x
Reference in New Issue
Block a user