projects
/
deliverable
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tracepoint: add tracepoints for debugging oom_score_adj
[deliverable/linux.git]
/
kernel
/
fork.c
diff --git
a/kernel/fork.c
b/kernel/fork.c
index b058c5820ecd9f0dacaa66db83150e5f2510083f..5e1391b5ade05848e9b9abbe555ebf99eec7be27 100644
(file)
--- a/
kernel/fork.c
+++ b/
kernel/fork.c
@@
-76,6
+76,9
@@
#include <trace/events/sched.h>
#include <trace/events/sched.h>
+#define CREATE_TRACE_POINTS
+#include <trace/events/task.h>
+
/*
* Protected counters by write_lock_irq(&tasklist_lock)
*/
/*
* Protected counters by write_lock_irq(&tasklist_lock)
*/
@@
-972,7
+975,7
@@
static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)
sched_autogroup_fork(sig);
#ifdef CONFIG_CGROUPS
sched_autogroup_fork(sig);
#ifdef CONFIG_CGROUPS
- init_rwsem(&sig->
threadgroup_fork_lock
);
+ init_rwsem(&sig->
group_rwsem
);
#endif
sig->oom_adj = current->signal->oom_adj;
#endif
sig->oom_adj = current->signal->oom_adj;
@@
-992,7
+995,6
@@
static void copy_flags(unsigned long clone_flags, struct task_struct *p)
new_flags |= PF_FORKNOEXEC;
new_flags |= PF_STARTING;
p->flags = new_flags;
new_flags |= PF_FORKNOEXEC;
new_flags |= PF_STARTING;
p->flags = new_flags;
- clear_freeze_flag(p);
}
SYSCALL_DEFINE1(set_tid_address, int __user *, tidptr)
}
SYSCALL_DEFINE1(set_tid_address, int __user *, tidptr)
@@
-1154,7
+1156,7
@@
static struct task_struct *copy_process(unsigned long clone_flags,
p->io_context = NULL;
p->audit_context = NULL;
if (clone_flags & CLONE_THREAD)
p->io_context = NULL;
p->audit_context = NULL;
if (clone_flags & CLONE_THREAD)
- threadgroup_
fork_read_lock
(current);
+ threadgroup_
change_begin
(current);
cgroup_fork(p);
#ifdef CONFIG_NUMA
p->mempolicy = mpol_dup(p->mempolicy);
cgroup_fork(p);
#ifdef CONFIG_NUMA
p->mempolicy = mpol_dup(p->mempolicy);
@@
-1369,8
+1371,11
@@
static struct task_struct *copy_process(unsigned long clone_flags,
proc_fork_connector(p);
cgroup_post_fork(p);
if (clone_flags & CLONE_THREAD)
proc_fork_connector(p);
cgroup_post_fork(p);
if (clone_flags & CLONE_THREAD)
- threadgroup_
fork_read_unlock
(current);
+ threadgroup_
change_end
(current);
perf_event_fork(p);
perf_event_fork(p);
+
+ trace_task_newtask(p, clone_flags);
+
return p;
bad_fork_free_pid:
return p;
bad_fork_free_pid:
@@
-1404,7
+1409,7
@@
bad_fork_cleanup_policy:
bad_fork_cleanup_cgroup:
#endif
if (clone_flags & CLONE_THREAD)
bad_fork_cleanup_cgroup:
#endif
if (clone_flags & CLONE_THREAD)
- threadgroup_
fork_read_unlock
(current);
+ threadgroup_
change_end
(current);
cgroup_exit(p, cgroup_callbacks_done);
delayacct_tsk_free(p);
module_put(task_thread_info(p)->exec_domain->module);
cgroup_exit(p, cgroup_callbacks_done);
delayacct_tsk_free(p);
module_put(task_thread_info(p)->exec_domain->module);
This page took
0.025789 seconds
and
5
git commands to generate.