• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Main entry of system server process.
3  *
4  * Calls the standard system initialization function, and then
5  * puts the main thread into the thread pool so it can handle
6  * incoming transactions.
7  *
8  */
9 
10 #define LOG_TAG "sysproc"
11 
12 #include <binder/IPCThreadState.h>
13 #include <utils/Log.h>
14 
15 #include <private/android_filesystem_config.h>
16 
17 #include <sys/time.h>
18 #include <sys/resource.h>
19 
20 #include <signal.h>
21 #include <stdio.h>
22 #include <unistd.h>
23 
24 using namespace android;
25 
26 extern "C" status_t system_init();
27 
finish_system_init()28 bool finish_system_init()
29 {
30     return true;
31 }
32 
blockSignals()33 static void blockSignals()
34 {
35     sigset_t mask;
36     int cc;
37 
38     sigemptyset(&mask);
39     sigaddset(&mask, SIGQUIT);
40     sigaddset(&mask, SIGUSR1);
41     cc = sigprocmask(SIG_BLOCK, &mask, NULL);
42     assert(cc == 0);
43 }
44 
main(int argc,const char * const argv[])45 int main(int argc, const char* const argv[])
46 {
47     LOGI("System server is starting with pid=%d.\n", getpid());
48 
49     blockSignals();
50 
51     // You can trust me, honestly!
52     LOGW("*** Current priority: %d\n", getpriority(PRIO_PROCESS, 0));
53     setpriority(PRIO_PROCESS, 0, -1);
54 
55     #if HAVE_ANDROID_OS
56     //setgid(GID_SYSTEM);
57     //setuid(UID_SYSTEM);
58     #endif
59 
60     system_init();
61 }
62