1 #ifdef OHOS_FDTRACK_HOOK_ENABLE 2 #include <stdlib.h> 3 #include <dlfcn.h> 4 #include <errno.h> 5 #include <stdio.h> 6 #include "musl_log.h" 7 #include "musl_fdtrack_hook.h" 8 9 static char *__fdtrack_hook_shared_lib = "libfdleak_tracker.so"; 10 FDTRACK_START_HOOK(int fd_value)11int FDTRACK_START_HOOK(int fd_value) 12 { 13 int fd = fd_value; 14 if (fd != -1 && __predict_false(__fdtrack_enabled) && __predict_false(__fdtrack_hook)) { 15 struct fdtrack_event event; 16 event.type = FDTRACK_EVENT_TYPE_CREATE; 17 atomic_load(&__fdtrack_hook)(&event); 18 } 19 return fd; 20 } 21 __musl_fdtrack_initialize()22__attribute__((constructor())) static void __musl_fdtrack_initialize() 23 { 24 void* shared_library_handle = NULL; 25 shared_library_handle = dlopen(__fdtrack_hook_shared_lib, RTLD_NOW | RTLD_LOCAL); 26 if (shared_library_handle == NULL) { 27 MUSL_LOGI("FdTrack, Unable to open shared library %s: %s.\n", __fdtrack_hook_shared_lib, dlerror()); 28 return; 29 } 30 MUSL_LOGI("FdTrack, load_fdtrack_hook_shared_library success."); 31 } 32 33 #endif 34