diff --git a/bsd/porting/kthread.h b/bsd/porting/kthread.h index 3c19b7d39bff279d66a824da4d00f3dedbf70c24..56d60eb9b6785e94fdbbba1a0b6ad25fb1345e2d 100644 --- a/bsd/porting/kthread.h +++ b/bsd/porting/kthread.h @@ -30,6 +30,9 @@ __END_DECLS #define curproc (get_curproc()) +extern unsigned char *osv_reclaimer_thread; +#define pageproc ((struct proc *)osv_reclaimer_thread) + #endif #endif diff --git a/core/mempool.cc b/core/mempool.cc index 466de98bdbd79735ca17b1e28326a4524cc50581..9e5d4735346abeb13b630c96c066e8b4b3c35568 100644 --- a/core/mempool.cc +++ b/core/mempool.cc @@ -40,6 +40,7 @@ TRACEPOINT(trace_memory_huge_failure, "page ranges=%d", unsigned long); TRACEPOINT(trace_memory_reclaim, "shrinker %s, target=%d, delta=%d", const char *, long, long); bool smp_allocator = false; +unsigned char *osv_reclaimer_thread; namespace memory { @@ -615,6 +616,7 @@ reclaimer::reclaimer() // std::thread is implemented ontop of pthreads, so it is fine std::thread tmp([&] { _thread = sched::thread::current(); + osv_reclaimer_thread = reinterpret_cast<unsigned char *>(_thread); allow_emergency_alloc = true; do { _do_reclaim();