posix-timers: Make them configurable
Some embedded systems have no use for them. This removes about 25KB from the kernel binary size when configured out. Corresponding syscalls are routed to a stub logging the attempt to use those syscalls which should be enough of a clue if they were disabled without proper consideration. They are: timer_create, timer_gettime: timer_getoverrun, timer_settime, timer_delete, clock_adjtime, setitimer, getitimer, alarm. The clock_settime, clock_gettime, clock_getres and clock_nanosleep syscalls are replaced by simple wrappers compatible with CLOCK_REALTIME, CLOCK_MONOTONIC and CLOCK_BOOTTIME only which should cover the vast majority of use cases with very little code. Signed-off-by: Nicolas Pitre <nico@linaro.org> Acked-by: Richard Cochran <richardcochran@gmail.com> Acked-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: John Stultz <john.stultz@linaro.org> Reviewed-by: Josh Triplett <josh@joshtriplett.org> Cc: Paul Bolle <pebolle@tiscali.nl> Cc: linux-kbuild@vger.kernel.org Cc: netdev@vger.kernel.org Cc: Michal Marek <mmarek@suse.com> Cc: Edward Cree <ecree@solarflare.com> Link: http://lkml.kernel.org/r/1478841010-28605-7-git-send-email-nicolas.pitre@linaro.org Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
53d3eaa315
commit
baa73d9e47
15 changed files with 200 additions and 13 deletions
|
|
@ -92,11 +92,10 @@ static void __exit_signal(struct task_struct *tsk)
|
|||
lockdep_tasklist_lock_is_held());
|
||||
spin_lock(&sighand->siglock);
|
||||
|
||||
#ifdef CONFIG_POSIX_TIMERS
|
||||
posix_cpu_timers_exit(tsk);
|
||||
if (group_dead) {
|
||||
posix_cpu_timers_exit_group(tsk);
|
||||
tty = sig->tty;
|
||||
sig->tty = NULL;
|
||||
} else {
|
||||
/*
|
||||
* This can only happen if the caller is de_thread().
|
||||
|
|
@ -105,7 +104,13 @@ static void __exit_signal(struct task_struct *tsk)
|
|||
*/
|
||||
if (unlikely(has_group_leader_pid(tsk)))
|
||||
posix_cpu_timers_exit_group(tsk);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (group_dead) {
|
||||
tty = sig->tty;
|
||||
sig->tty = NULL;
|
||||
} else {
|
||||
/*
|
||||
* If there is any task waiting for the group exit
|
||||
* then notify it:
|
||||
|
|
@ -803,8 +808,10 @@ void __noreturn do_exit(long code)
|
|||
acct_update_integrals(tsk);
|
||||
group_dead = atomic_dec_and_test(&tsk->signal->live);
|
||||
if (group_dead) {
|
||||
#ifdef CONFIG_POSIX_TIMERS
|
||||
hrtimer_cancel(&tsk->signal->real_timer);
|
||||
exit_itimers(tsk->signal);
|
||||
#endif
|
||||
if (tsk->mm)
|
||||
setmax_mm_hiwater_rss(&tsk->signal->maxrss, tsk->mm);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue