// file_probes
// proc_probes
-static void proc_p_init(struct proc_probes *proc_p, struct dentry* dentry)
+static void proc_p_init(struct proc_probes *proc_p, struct dentry* dentry, pid_t tgid)
{
INIT_LIST_HEAD(&proc_p->list);
- proc_p->tgid = 0;
+ proc_p->tgid = tgid;
proc_p->dentry = dentry;
INIT_LIST_HEAD(&proc_p->file_list);
}
}
}
-static struct proc_probes *proc_p_copy(struct proc_probes *proc_p)
+static struct proc_probes *proc_p_copy(struct proc_probes *proc_p, struct task_struct *task)
{
struct file_probes *file_p;
struct proc_probes *proc_p_out = kmalloc(sizeof(*proc_p_out), GFP_ATOMIC);
- proc_p_init(proc_p_out, proc_p->dentry);
+ proc_p_init(proc_p_out, proc_p->dentry, task->tgid);
list_for_each_entry(file_p, &proc_p->file_list, list) {
proc_p_add_file_p(proc_p_out, file_p_copy(file_p));
if (proc_p) {
int i;
- proc_p_init(proc_p, task_inst_info->m_f_dentry);
+ proc_p_init(proc_p, task_inst_info->m_f_dentry, 0);
printk("#2# get_file_probes: proc_p[dentry=%p]\n", proc_p->dentry);
void add_proc_probes(struct task_struct *task, struct proc_probes *proc_p)
{
- proc_p->tgid = task->tgid;
list_add_tail(&proc_p->list, &proc_probes_list);
}
{
struct proc_probes *proc_p = get_proc_probes_by_task(task);
if (proc_p == NULL) {
- proc_p = proc_p_copy(us_proc_info.pp);
+ proc_p = proc_p_copy(us_proc_info.pp, task);
add_proc_probes(task, proc_p);
}