From 4cbabb73ae17145e8dab828d44953a52fdc74d17 Mon Sep 17 00:00:00 2001 From: Francisco Javier Trujillo Mata Date: Thu, 24 Mar 2022 22:56:58 +0100 Subject: [PATCH] Macro for disabling usage of pthread --- src/libcglue/Makefile.am | 2 +- src/libcglue/init.c | 15 ++++++++++++++- src/user/pspmoduleinfo.h | 4 ++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/libcglue/Makefile.am b/src/libcglue/Makefile.am index 7d59741a..39ef8e73 100644 --- a/src/libcglue/Makefile.am +++ b/src/libcglue/Makefile.am @@ -31,7 +31,7 @@ GLUE_OBJS = __dummy_passwd.o __fill_stat.o __psp_heap_blockid.o __psp_free_heap. fsync.o getpwnam.o getuid.o geteuid.o -INIT_OBJS = __libcglue_init.o __libcglue_deinit.o _exit.o abort.o exit.o +INIT_OBJS = __libpthreadglue_init.o __libcglue_init.o __libcglue_deinit.o _exit.o abort.o exit.o MUTEXMAN_OBJS = __malloc_mutex.o __sbrk_mutex.o __fdman_mutex.o __init_mutex.o __deinit_mutex.o diff --git a/src/libcglue/init.c b/src/libcglue/init.c index ed3b6654..d78ac6a3 100644 --- a/src/libcglue/init.c +++ b/src/libcglue/init.c @@ -29,6 +29,19 @@ void __deinit_mutex(); extern int sce_newlib_nocreate_thread_in_start __attribute__((weak)); +#ifdef F___libpthreadglue_init +/* Note: This function is being called from __libcglue_init. +* It is a weak function because can be override by user program +*/ +__attribute__((weak)) +void __libpthreadglue_init() +{ + pthread_init(); +} +#else +void __libpthreadglue_init(); +#endif + #ifdef F___libcglue_init /* Note: This function is being called from crt0.c/crt0_prx.c. * It is a weak function because can be override by user program, @@ -47,7 +60,7 @@ void __libcglue_init(int argc, char *argv[]) __fdman_init(); /* Initialize pthread library */ - pthread_init(); + __libpthreadglue_init(); /* Initialize cwd from this program's path */ __init_cwd(argv[0]); diff --git a/src/user/pspmoduleinfo.h b/src/user/pspmoduleinfo.h index 68c80f1b..13427269 100644 --- a/src/user/pspmoduleinfo.h +++ b/src/user/pspmoduleinfo.h @@ -107,8 +107,8 @@ enum PspModuleInfoAttr void __libcglue_init(int argc, char *argv[]) {} \ void __libcglue_deinit() {} -/* Disable the use of pthread for reducing binary size */ -#define PSP_DISABLE_PTHREAD() \ +/* Disable the auto start of pthread on init for reducing binary size if not used. */ +#define PSP_DISABLE_AUTOSTART_PTHREAD() \ void __libpthreadglue_init() {} #endif /* PSPMODULEINFO_H */