feat: add support for preemption

This commit is contained in:
Nemo D'ACREMONT 2025-04-11 14:27:41 +02:00
parent 964a810fad
commit 50438b2c01
No known key found for this signature in database
GPG Key ID: 85F245EC3BB1E022

View File

@ -5,12 +5,12 @@ install_dir?=install
# Comment out the bins that doesn't need to be compiled
bbins+=$(wildcard ${tst_dir}/*.c)
bins=$(filter-out ${tst_dir}/51-fibonacci.c, ${bbins})
bins=$(filter-out ${tst_dir}/51-fibonacci.c ${tst_dir}/71-preemption.c, ${bbins})
all_bins=01-main 02-switch 03-equity 11-join 12-join-main 21-create-many 22-create-many-recursive 23-create-many-once 31-switch-many 32-switch-many-join 33-switch-many-cascade 51-fibonacci 61-mutex 62-mutex 63-mutex-equity 64-mutex-join 71-preemption 81-deadlock
bins_target=$(patsubst %.c,${build_dir}/%,${bins})
install_bins_targets=$(patsubst ${tst_dir}/%.c,${install_dir}/bin/%,${bins})
install_bins_targets+=${install_dir}/bin/51-fibonacci
install_bins_targets+=${install_dir}/bin/51-fibonacci ${install_dir}/bin/71-preemption
valgrind_targets=$(addprefix valgrind_,${all_bins})
@ -76,7 +76,7 @@ ${valgrind_targets}: valgrind_%: ${build_dir}/${tst_dir}/%
valgrind $^ ${check_argv} --leak-check=full --show-reachable=yes --track-origins=yes
.PHONY: build
build: ${bins_target} ${build_dir}/libthread.so ${build_dir}/libthread.a
build: ${bins_target} ${build_dir}/libthread.so ${build_dir}/libthread.a ${build_dir}/${tst_dir}/51-fibonacci ${build_dir}/${tst_dir}/71-preemption
.PHONY: debug
debug:
@ -100,6 +100,9 @@ ${bins_target}: ${build_dir}/%: ${objs} ${build_dir}/%.o
${build_dir}/${tst_dir}/51-fibonacci: ${build_dir}/src/thread/thread_fibo.o ${build_dir}/${tst_dir}/51-fibonacci.o
${CC} -o $@ $^ ${CFLAGS} ./lib/libmimalloc ${LDFLAGS}
${build_dir}/${tst_dir}/71-preemption: ${build_dir}/src/thread/thread_preempt.o ${build_dir}/${tst_dir}/71-preemption.o
${CC} -o $@ $^ ${CFLAGS} ./lib/libmimalloc ${LDFLAGS}
${build_dir}/libthread.so: ${objs}
${CC} -o $@ -shared $^ ${CFLAGS} ${LDFLAGS}
@ -110,6 +113,10 @@ ${build_dir}/%_fibo.o: %.c
@mkdir -p $(dir $@)
${CC} -o $@ -c $^ -DFIBO_STRAT ${CFLAGS}
${build_dir}/%_preempt.o: %.c
@mkdir -p $(dir $@)
${CC} -o $@ -c $^ -DPREEMPTION ${CFLAGS}
${build_dir}/%.o: %.c
@mkdir -p $(dir $@)
${CC} -o $@ -c $^ ${CFLAGS}