in IPCThreadState::executeCommand() case BR_SPAWN_LOOPER: the binder driver sends a command up to user level, suggesting that it create another thread see frameworks/native(or base)/libs/binder/IPCThreadState.cpp
On Wednesday, July 18, 2012 9:02:31 AM UTC-7, failuch wrote: > > Hello Dianne & all good people here > > Concerning binder thread pool. > > I am new to the android and I am confused when mentioned thread pool but > I do not see in binder code > any thread creation ( aka kthread_create), the only thread that exists in > binder driver is Garbage collector . > Looking at he code I see that there is binder_thread object that counts > ready_threads > My understanding that user space spawns threads but binder driver may > limit access to service if service application sets this limit calling > ioctl( BINDER_SET_MAX_THREADS). > > Can somebody clarify this issue ? (no threads created in kernel ?) > > > > ThanX, > Failuch > > On Thursday, May 6, 2010 10:15:57 PM UTC+3, Vesmar wrote: >> >> Hi all, >> >> I m studying how Android creates new processes and found two scenarios. >> >> when I am running native programs on a terminal on Android (ps, ls, >> mkdir, etc) all programs are created in the standard way, that is, >> fork (clone) and execve system calls. The process name on task struct >> is set by the putname() on the sys_execve syscall handler. >> >> But when I run a Android application such the Calculator, for example, >> i found 6 new tasks (processes or threads) forked by zygote. In fact, >> zygote forks just one process and this new process spawns 4 new >> processes and set their names using set_task_comm() and the last one >> forks an aditional process. And at the last set_task_comm() is called >> for the first forked process from zygote. >> >> So there are two ways for set the task->comm field for a process: The >> standard way (using execve and putname()) and a new way used by >> Android using sys_prctl who calls set_task_comm(). >> >> Does anyone have more information on how processes are created on >> Android and why a App needs all theis tasks forked by zygote? Why >> execve is not used and what is used instead? >> >> I m using Android for Mips using the Arriba QEMU emulator as my >> experimentation platform. >> >> Thanks, >> >> -- >> unsubscribe: android-kernel+unsubscr...@googlegroups.com >> website: http://groups.google.com/group/android-kernel > > -- unsubscribe: android-kernel+unsubscr...@googlegroups.com website: http://groups.google.com/group/android-kernel