Lines Matching refs:task

388 typedef int (*pfm_reg_check_t)(struct task_struct *task, pfm_context_t *ctx, unsigned int cnum, uns…
579 pfm_put_task(struct task_struct *task) in pfm_put_task() argument
581 if (task != current) put_task_struct(task); in pfm_put_task()
921 pfm_mask_monitoring(struct task_struct *task) in pfm_mask_monitoring() argument
923 pfm_context_t *ctx = PFM_GET_CTX(task); in pfm_mask_monitoring()
927 DPRINT_ovfl(("masking monitoring for [%d]\n", task_pid_nr(task))); in pfm_mask_monitoring()
995 pfm_restore_monitoring(struct task_struct *task) in pfm_restore_monitoring() argument
997 pfm_context_t *ctx = PFM_GET_CTX(task); in pfm_restore_monitoring()
1005 if (task != current) { in pfm_restore_monitoring()
1006 …printk(KERN_ERR "perfmon.%d: invalid task[%d] current[%d]\n", __LINE__, task_pid_nr(task), task_pi… in pfm_restore_monitoring()
1011 task_pid_nr(task), task_pid_nr(current), ctx->ctx_state); in pfm_restore_monitoring()
1066 task_pid_nr(task), i, ctx->th_pmcs[i])); in pfm_restore_monitoring()
1123 pfm_copy_pmds(struct task_struct *task, pfm_context_t *ctx) in pfm_copy_pmds() argument
1159 pfm_copy_pmcs(struct task_struct *task, pfm_context_t *ctx) in pfm_copy_pmcs() argument
1194 pfm_buf_fmt_exit(pfm_buffer_fmt_t *fmt, struct task_struct *task, void *buf, struct pt_regs *regs) in pfm_buf_fmt_exit() argument
1197 if (fmt->fmt_exit) ret = (*fmt->fmt_exit)(task, buf, regs); in pfm_buf_fmt_exit()
1202 pfm_buf_fmt_getsize(pfm_buffer_fmt_t *fmt, struct task_struct *task, unsigned int flags, int cpu, v… in pfm_buf_fmt_getsize() argument
1205 if (fmt->fmt_getsize) ret = (*fmt->fmt_getsize)(task, flags, cpu, arg, size); in pfm_buf_fmt_getsize()
1211 pfm_buf_fmt_validate(pfm_buffer_fmt_t *fmt, struct task_struct *task, unsigned int flags, in pfm_buf_fmt_validate() argument
1215 if (fmt->fmt_validate) ret = (*fmt->fmt_validate)(task, flags, cpu, arg); in pfm_buf_fmt_validate()
1220 pfm_buf_fmt_init(pfm_buffer_fmt_t *fmt, struct task_struct *task, void *buf, unsigned int flags, in pfm_buf_fmt_init() argument
1224 if (fmt->fmt_init) ret = (*fmt->fmt_init)(task, buf, flags, cpu, arg); in pfm_buf_fmt_init()
1229 pfm_buf_fmt_restart(pfm_buffer_fmt_t *fmt, struct task_struct *task, pfm_ovfl_ctrl_t *ctrl, void *b… in pfm_buf_fmt_restart() argument
1232 if (fmt->fmt_restart) ret = (*fmt->fmt_restart)(task, ctrl, buf, regs); in pfm_buf_fmt_restart()
1237 pfm_buf_fmt_restart_active(pfm_buffer_fmt_t *fmt, struct task_struct *task, pfm_ovfl_ctrl_t *ctrl, … in pfm_buf_fmt_restart_active() argument
1240 if (fmt->fmt_restart_active) ret = (*fmt->fmt_restart_active)(task, ctrl, buf, regs); in pfm_buf_fmt_restart_active()
1327 pfm_reserve_session(struct task_struct *task, int is_syswide, unsigned int cpu) in pfm_reserve_session() argument
1356 pfm_sessions.pfs_sys_session[cpu] = task; in pfm_reserve_session()
1448 struct task_struct *task = current; in pfm_remove_smpl_mapping() local
1452 if (task->mm == NULL || size == 0UL || vaddr == NULL) { in pfm_remove_smpl_mapping()
1453 …_ERR "perfmon: pfm_remove_smpl_mapping [%d] invalid context mm=%p\n", task_pid_nr(task), task->mm); in pfm_remove_smpl_mapping()
1465 …printk(KERN_ERR "perfmon: [%d] unable to unmap sampling buffer @%p size=%lu\n", task_pid_nr(task),… in pfm_remove_smpl_mapping()
1813 struct task_struct *task; in pfm_flush() local
1849 task = PFM_CTX_TASK(ctx); in pfm_flush()
1850 regs = task_pt_regs(task); in pfm_flush()
1854 task == current ? 1 : 0)); in pfm_flush()
1863 if (task == current) { in pfm_flush()
1952 struct task_struct *task; in pfm_close() local
1979 task = PFM_CTX_TASK(ctx); in pfm_close()
1980 regs = task_pt_regs(task); in pfm_close()
1984 task == current ? 1 : 0)); in pfm_close()
2060 else if (task != current) { in pfm_close()
2067 DPRINT(("zombie ctx for [%d]\n", task_pid_nr(task))); in pfm_close()
2239 pfm_smpl_buffer_alloc(struct task_struct *task, struct file *filp, pfm_context_t *ctx, unsigned lon… in pfm_smpl_buffer_alloc() argument
2241 struct mm_struct *mm = task->mm; in pfm_smpl_buffer_alloc()
2262 if (size > task_rlimit(task, RLIMIT_MEMLOCK)) in pfm_smpl_buffer_alloc()
2308 down_write(&task->mm->mmap_sem); in pfm_smpl_buffer_alloc()
2314 up_write(&task->mm->mmap_sem); in pfm_smpl_buffer_alloc()
2325 up_write(&task->mm->mmap_sem); in pfm_smpl_buffer_alloc()
2337 up_write(&task->mm->mmap_sem); in pfm_smpl_buffer_alloc()
2359 pfm_bad_permissions(struct task_struct *task) in pfm_bad_permissions() argument
2367 tcred = __task_cred(task); in pfm_bad_permissions()
2391 pfarg_is_sane(struct task_struct *task, pfarg_context_t *pfx) in pfarg_is_sane() argument
2416 pfm_setup_buffer_fmt(struct task_struct *task, struct file *filp, pfm_context_t *ctx, unsigned int … in pfm_setup_buffer_fmt() argument
2429 DPRINT(("[%d] cannot find buffer format\n", task_pid_nr(task))); in pfm_setup_buffer_fmt()
2438 ret = pfm_buf_fmt_validate(fmt, task, ctx_flags, cpu, fmt_arg); in pfm_setup_buffer_fmt()
2440 DPRINT(("[%d] after validate(0x%x,%d,%p)=%d\n", task_pid_nr(task), ctx_flags, cpu, fmt_arg, ret)); in pfm_setup_buffer_fmt()
2451 ret = pfm_buf_fmt_getsize(fmt, task, ctx_flags, cpu, fmt_arg, &size); in pfm_setup_buffer_fmt()
2464 ret = pfm_buf_fmt_init(fmt, task, ctx->ctx_smpl_hdr, ctx_flags, cpu, fmt_arg); in pfm_setup_buffer_fmt()
2557 pfm_task_incompatible(pfm_context_t *ctx, struct task_struct *task) in pfm_task_incompatible() argument
2562 if (task->mm == NULL) { in pfm_task_incompatible()
2563 DPRINT(("task [%d] has not memory context (kernel thread)\n", task_pid_nr(task))); in pfm_task_incompatible()
2566 if (pfm_bad_permissions(task)) { in pfm_task_incompatible()
2567 DPRINT(("no permission to attach to [%d]\n", task_pid_nr(task))); in pfm_task_incompatible()
2573 if (CTX_OVFL_NOBLOCK(ctx) == 0 && task == current) { in pfm_task_incompatible()
2574 DPRINT(("cannot load a blocking context on self for [%d]\n", task_pid_nr(task))); in pfm_task_incompatible()
2578 if (task->exit_state == EXIT_ZOMBIE) { in pfm_task_incompatible()
2579 DPRINT(("cannot attach to zombie task [%d]\n", task_pid_nr(task))); in pfm_task_incompatible()
2586 if (task == current) return 0; in pfm_task_incompatible()
2588 if (!task_is_stopped_or_traced(task)) { in pfm_task_incompatible()
2589 DPRINT(("cannot attach to non-stopped task [%d] state=%ld\n", task_pid_nr(task), task->state)); in pfm_task_incompatible()
2595 wait_task_inactive(task, 0); in pfm_task_incompatible()
2603 pfm_get_task(pfm_context_t *ctx, pid_t pid, struct task_struct **task) in pfm_get_task() argument
2627 *task = p; in pfm_get_task()
2823 struct task_struct *task; in pfm_write_pmcs() local
2837 task = ctx->ctx_task; in pfm_write_pmcs()
2852 can_access_pmu = GET_PMU_OWNER() == task || is_system ? 1 : 0; in pfm_write_pmcs()
2935 ret = (*wr_func)(task, ctx, cnum, &value, regs); in pfm_write_pmcs()
3063 struct task_struct *task; in pfm_write_pmds() local
3077 task = ctx->ctx_task; in pfm_write_pmds()
3095 can_access_pmu = GET_PMU_OWNER() == task || is_system ? 1 : 0; in pfm_write_pmds()
3117 ret = (*wr_func)(task, ctx, cnum, &v, regs); in pfm_write_pmds()
3259 struct task_struct *task; in pfm_read_pmds() local
3277 task = ctx->ctx_task; in pfm_read_pmds()
3294 can_access_pmu = GET_PMU_OWNER() == task || is_system ? 1 : 0; in pfm_read_pmds()
3388 pfm_mod_write_pmcs(struct task_struct *task, void *req, unsigned int nreq, struct pt_regs *regs) in pfm_mod_write_pmcs() argument
3402 if (task != current && ctx->ctx_fl_system == 0) return -EBUSY; in pfm_mod_write_pmcs()
3409 pfm_mod_read_pmds(struct task_struct *task, void *req, unsigned int nreq, struct pt_regs *regs) in pfm_mod_read_pmds() argument
3423 if (task != current && ctx->ctx_fl_system == 0) return -EBUSY; in pfm_mod_read_pmds()
3434 pfm_use_debug_registers(struct task_struct *task) in pfm_use_debug_registers() argument
3436 pfm_context_t *ctx = task->thread.pfm_context; in pfm_use_debug_registers()
3442 DPRINT(("called for [%d]\n", task_pid_nr(task))); in pfm_use_debug_registers()
3447 if (task->thread.flags & IA64_THREAD_DBG_VALID) return 0; in pfm_use_debug_registers()
3473 task_pid_nr(task), ret)); in pfm_use_debug_registers()
3489 pfm_release_debug_registers(struct task_struct *task) in pfm_release_debug_registers() argument
3498 printk(KERN_ERR "perfmon: invalid release for [%d] ptrace_use_dbregs=0\n", task_pid_nr(task)); in pfm_release_debug_registers()
3512 struct task_struct *task; in pfm_restart() local
3521 task = PFM_CTX_TASK(ctx); in pfm_restart()
3549 if (unlikely(task == NULL)) { in pfm_restart()
3554 if (task == current || is_system) { in pfm_restart()
3559 task_pid_nr(task), in pfm_restart()
3570 ret = pfm_buf_fmt_restart_active(fmt, task, &rst_ctrl, ctx->ctx_smpl_hdr, regs); in pfm_restart()
3572 ret = pfm_buf_fmt_restart(fmt, task, &rst_ctrl, ctx->ctx_smpl_hdr, regs); in pfm_restart()
3583 DPRINT(("resuming monitoring for [%d]\n", task_pid_nr(task))); in pfm_restart()
3585 if (state == PFM_CTX_MASKED) pfm_restore_monitoring(task); in pfm_restart()
3587 DPRINT(("keeping monitoring stopped for [%d]\n", task_pid_nr(task))); in pfm_restart()
3644 DPRINT(("unblocking [%d]\n", task_pid_nr(task))); in pfm_restart()
3647 DPRINT(("[%d] armed exit trap\n", task_pid_nr(task))); in pfm_restart()
3651 PFM_SET_WORK_PENDING(task, 1); in pfm_restart()
3653 set_notify_resume(task); in pfm_restart()
3685 struct task_struct *task; in pfm_write_ibr_dbr() local
3700 task = ctx->ctx_task; in pfm_write_ibr_dbr()
3709 thread = &task->thread; in pfm_write_ibr_dbr()
3719 can_access_pmu = GET_PMU_OWNER() == task || is_system ? 1 : 0; in pfm_write_ibr_dbr()
3735 DPRINT(("debug registers already in use for [%d]\n", task_pid_nr(task))); in pfm_write_ibr_dbr()
3776 DPRINT(("[%d] clearing ibrs, dbrs\n", task_pid_nr(task))); in pfm_write_ibr_dbr()
3889 pfm_mod_write_ibrs(struct task_struct *task, void *req, unsigned int nreq, struct pt_regs *regs) in pfm_mod_write_ibrs() argument
3903 if (task != current && ctx->ctx_fl_system == 0) return -EBUSY; in pfm_mod_write_ibrs()
3910 pfm_mod_write_dbrs(struct task_struct *task, void *req, unsigned int nreq, struct pt_regs *regs) in pfm_mod_write_dbrs() argument
3924 if (task != current && ctx->ctx_fl_system == 0) return -EBUSY; in pfm_mod_write_dbrs()
3944 struct task_struct *task = PFM_CTX_TASK(ctx); in pfm_stop() local
4003 if (task == current) { in pfm_stop()
4012 tregs = task_pt_regs(task); in pfm_stop()
4023 DPRINT(("task=[%d]\n", task_pid_nr(task))); in pfm_stop()
4162 struct task_struct *task; in pfm_context_load() local
4194 ret = pfm_get_task(ctx, req->load_pid, &task); in pfm_context_load()
4205 if (is_system && task != current) { in pfm_context_load()
4211 thread = &task->thread; in pfm_context_load()
4229 task_pid_nr(task))); in pfm_context_load()
4233 …DPRINT(("load [%d] increased sys_use_dbreg=%u\n", task_pid_nr(task), pfm_sessions.pfs_sys_use_dbre… in pfm_context_load()
4293 ctx->ctx_task = task; in pfm_context_load()
4310 pfm_copy_pmds(task, ctx); in pfm_context_load()
4311 pfm_copy_pmcs(task, ctx); in pfm_context_load()
4319 if (task == current) { in pfm_context_load()
4325 DPRINT(("clearing psr.sp for [%d]\n", task_pid_nr(task))); in pfm_context_load()
4358 SET_PMU_OWNER(task, ctx); in pfm_context_load()
4360 DPRINT(("context loaded on PMU for [%d]\n", task_pid_nr(task))); in pfm_context_load()
4365 regs = task_pt_regs(task); in pfm_context_load()
4392 if (is_system == 0 && task != current) { in pfm_context_load()
4393 pfm_put_task(task); in pfm_context_load()
4419 struct task_struct *task = PFM_CTX_TASK(ctx); in pfm_context_unload() local
4424 DPRINT(("ctx_state=%d task [%d]\n", ctx->ctx_state, task ? task_pid_nr(task) : -1)); in pfm_context_unload()
4476 task->thread.pfm_context = NULL; in pfm_context_unload()
4491 tregs = task == current ? regs : task_pt_regs(task); in pfm_context_unload()
4493 if (task == current) { in pfm_context_unload()
4499 DPRINT(("setting psr.sp for [%d]\n", task_pid_nr(task))); in pfm_context_unload()
4505 pfm_flush_pmds(task, ctx); in pfm_context_unload()
4525 task->thread.flags &= ~IA64_THREAD_PM_VALID; in pfm_context_unload()
4530 task->thread.pfm_context = NULL; in pfm_context_unload()
4533 PFM_SET_WORK_PENDING(task, 0); in pfm_context_unload()
4539 DPRINT(("disconnected [%d] from context\n", task_pid_nr(task))); in pfm_context_unload()
4550 pfm_exit_thread(struct task_struct *task) in pfm_exit_thread() argument
4554 struct pt_regs *regs = task_pt_regs(task); in pfm_exit_thread()
4558 ctx = PFM_GET_CTX(task); in pfm_exit_thread()
4562 DPRINT(("state=%d task [%d]\n", ctx->ctx_state, task_pid_nr(task))); in pfm_exit_thread()
4571 printk(KERN_ERR "perfmon: pfm_exit_thread [%d] ctx unloaded\n", task_pid_nr(task)); in pfm_exit_thread()
4577 …printk(KERN_ERR "perfmon: pfm_exit_thread [%d] state=%d unload failed %d\n", task_pid_nr(task), st… in pfm_exit_thread()
4586 …printk(KERN_ERR "perfmon: pfm_exit_thread [%d] state=%d unload failed %d\n", task_pid_nr(task), st… in pfm_exit_thread()
4591 printk(KERN_ERR "perfmon: pfm_exit_thread [%d] unexpected state=%d\n", task_pid_nr(task), state); in pfm_exit_thread()
4660 struct task_struct *task; in pfm_check_task_state() local
4665 task = ctx->ctx_task; in pfm_check_task_state()
4667 if (task == NULL) { in pfm_check_task_state()
4675 task_pid_nr(task), in pfm_check_task_state()
4676 task->state, PFM_CMD_STOPPED(cmd))); in pfm_check_task_state()
4685 if (task == current || ctx->ctx_fl_system) return 0; in pfm_check_task_state()
4721 if (!task_is_stopped_or_traced(task)) { in pfm_check_task_state()
4722 DPRINT(("[%d] task not in stopped state\n", task_pid_nr(task))); in pfm_check_task_state()
4743 wait_task_inactive(task, 0); in pfm_check_task_state()
5175 static void pfm_overflow_handler(struct task_struct *task, pfm_context_t *ctx, in pfm_overflow_handler() argument
5202 task ? task_pid_nr(task): -1, in pfm_overflow_handler()
5305 ret = (*ctx->ctx_buf_fmt->fmt_handler)(task, ctx->ctx_smpl_hdr, ovfl_arg, regs, tstamp); in pfm_overflow_handler()
5375 PFM_SET_WORK_PENDING(task, 1); in pfm_overflow_handler()
5381 set_notify_resume(task); in pfm_overflow_handler()
5392 PFM_GET_WORK_PENDING(task), in pfm_overflow_handler()
5401 pfm_mask_monitoring(task); in pfm_overflow_handler()
5416 task ? task_pid_nr(task) : -1, in pfm_overflow_handler()
5449 DPRINT(("ctx is zombie for [%d], converted to spurious\n", task ? task_pid_nr(task): -1)); in pfm_overflow_handler()
5459 struct task_struct *task; in pfm_do_interrupt_handler() local
5473 task = GET_PMU_OWNER(); in pfm_do_interrupt_handler()
5480 if (PMC0_HAS_OVFL(pmc0) && task) { in pfm_do_interrupt_handler()
5488 if (ctx->ctx_fl_system == 0 && (task->thread.flags & IA64_THREAD_PM_VALID) == 0) in pfm_do_interrupt_handler()
5493 pfm_overflow_handler(task, ctx, pmc0, regs); in pfm_do_interrupt_handler()
5510 this_cpu, task_pid_nr(task)); in pfm_do_interrupt_handler()
5516 task_pid_nr(task)); in pfm_do_interrupt_handler()
5731 pfm_syst_wide_update_task(struct task_struct *task, unsigned long info, int is_ctxswin) in pfm_syst_wide_update_task() argument
5743 if ((info & PFM_CPUINFO_EXCL_IDLE) == 0 || task->pid) { in pfm_syst_wide_update_task()
5744 regs = task_pt_regs(task); in pfm_syst_wide_update_task()
5781 struct task_struct *task = ctx->ctx_task; in pfm_force_cleanup() local
5786 if (GET_PMU_OWNER() == task) { in pfm_force_cleanup()
5795 PFM_SET_WORK_PENDING(task, 0); in pfm_force_cleanup()
5797 task->thread.pfm_context = NULL; in pfm_force_cleanup()
5798 task->thread.flags &= ~IA64_THREAD_PM_VALID; in pfm_force_cleanup()
5800 DPRINT(("force cleanup for [%d]\n", task_pid_nr(task))); in pfm_force_cleanup()
5808 pfm_save_regs(struct task_struct *task) in pfm_save_regs() argument
5815 ctx = PFM_GET_CTX(task); in pfm_save_regs()
5826 struct pt_regs *regs = task_pt_regs(task); in pfm_save_regs()
5897 pfm_save_regs(struct task_struct *task) in pfm_save_regs() argument
5902 ctx = PFM_GET_CTX(task); in pfm_save_regs()
5928 pfm_lazy_save_regs (struct task_struct *task) in pfm_lazy_save_regs() argument
5937 ctx = PFM_GET_CTX(task); in pfm_lazy_save_regs()
5990 pfm_load_regs (struct task_struct *task) in pfm_load_regs() argument
5998 ctx = PFM_GET_CTX(task); in pfm_load_regs()
6006 if (unlikely((task->thread.flags & IA64_THREAD_PM_VALID) == 0)) return; in pfm_load_regs()
6022 struct pt_regs *regs = task_pt_regs(task); in pfm_load_regs()
6132 SET_PMU_OWNER(task, ctx); in pfm_load_regs()
6153 pfm_load_regs (struct task_struct *task) in pfm_load_regs() argument
6162 ctx = PFM_GET_CTX(task); in pfm_load_regs()
6195 if (likely(owner == task)) { in pfm_load_regs()
6253 SET_PMU_OWNER(task, ctx); in pfm_load_regs()
6269 pfm_flush_pmds(struct task_struct *task, pfm_context_t *ctx) in pfm_flush_pmds() argument
6280 is_self = ctx->ctx_task == task ? 1 : 0; in pfm_flush_pmds()
6289 …can_access_pmu = (GET_PMU_OWNER() == task) || (ctx->ctx_fl_system && ctx->ctx_cpu == smp_processor… in pfm_flush_pmds()
6344 task_pid_nr(task), in pfm_flush_pmds()
6366 DPRINT(("[%d] pmd[%d] overflowed\n", task_pid_nr(task), i)); in pfm_flush_pmds()
6370 DPRINT(("[%d] ctx_pmd[%d]=0x%lx pmd_val=0x%lx\n", task_pid_nr(task), i, val, pmd_val)); in pfm_flush_pmds()
6685 struct task_struct *task; in dump_pmu_state() local
6710 task = GET_PMU_OWNER(); in dump_pmu_state()
6713 printk("->CPU%d owner [%d] ctx=%p\n", this_cpu, task ? task_pid_nr(task) : -1, ctx); in dump_pmu_state()
6757 pfm_inherit(struct task_struct *task, struct pt_regs *regs) in pfm_inherit() argument
6761 DPRINT(("perfmon: pfm_inherit clearing state for [%d]\n", task_pid_nr(task))); in pfm_inherit()
6763 thread = &task->thread; in pfm_inherit()
6770 PFM_SET_WORK_PENDING(task, 0); in pfm_inherit()