• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)11 int 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