19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Main entry of system server process. 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Calls the standard system initialization function, and then 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * puts the main thread into the thread pool so it can handle 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * incoming transactions. 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define LOG_TAG "sysproc" 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 120795272aa226f4e965968a03daddc53ce30b7cdaMathias Agopian#include <binder/IPCThreadState.h> 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <utils/Log.h> 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <private/android_filesystem_config.h> 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <sys/time.h> 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <sys/resource.h> 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <signal.h> 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <stdio.h> 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <unistd.h> 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectusing namespace android; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectextern "C" status_t system_init(); 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool finish_system_init() 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic void blockSignals() 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sigset_t mask; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int cc; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sigemptyset(&mask); 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sigaddset(&mask, SIGQUIT); 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sigaddset(&mask, SIGUSR1); 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project cc = sigprocmask(SIG_BLOCK, &mask, NULL); 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assert(cc == 0); 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectint main(int argc, const char* const argv[]) 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LOGI("System server is starting with pid=%d.\n", getpid()); 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project blockSignals(); 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // You can trust me, honestly! 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LOGW("*** Current priority: %d\n", getpriority(PRIO_PROCESS, 0)); 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setpriority(PRIO_PROCESS, 0, -1); 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project #if HAVE_ANDROID_OS 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //setgid(GID_SYSTEM); 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //setuid(UID_SYSTEM); 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project #endif 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project system_init(); 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 62