Lines Matching refs:info
270 static void hardwall_setup_func(void *info) in hardwall_setup_func() argument
272 struct hardwall_info *r = info; in hardwall_setup_func()
326 struct siginfo info; in do_hardwall_trap() local
386 info.si_signo = SIGILL; in do_hardwall_trap()
387 info.si_errno = 0; in do_hardwall_trap()
388 info.si_code = ILL_HARDWALL; in do_hardwall_trap()
392 BUG_ON(p->thread.hardwall[hwt->index].info != rect); in do_hardwall_trap()
396 do_send_sig_info(info.si_signo, &info, p, false); in do_hardwall_trap()
462 if (prev->thread.hardwall[i].info != NULL) { in hardwall_switch_tasks()
463 if (next->thread.hardwall[i].info == NULL) in hardwall_switch_tasks()
465 } else if (next->thread.hardwall[i].info != NULL) { in hardwall_switch_tasks()
475 struct hardwall_info *info = in hardwall_ipi_valid() local
476 current->thread.hardwall[HARDWALL_IPI].info; in hardwall_ipi_valid()
477 return info && cpumask_test_cpu(cpu, &info->cpumask); in hardwall_ipi_valid()
492 struct hardwall_info *iter, *info; in hardwall_create() local
524 info = kmalloc(sizeof(struct hardwall_info), in hardwall_create()
526 if (info == NULL) in hardwall_create()
528 INIT_LIST_HEAD(&info->task_head); in hardwall_create()
529 info->type = hwt; in hardwall_create()
532 cpumask_copy(&info->cpumask, &mask); in hardwall_create()
533 info->id = find_first_bit(cpumask_bits(&mask), nr_cpumask_bits); in hardwall_create()
535 rc = check_rectangle(info, &mask); in hardwall_create()
537 kfree(info); in hardwall_create()
548 cpumask_and(&info->cpumask, &info->cpumask, cpu_online_mask); in hardwall_create()
553 if (cpumask_intersects(&iter->cpumask, &info->cpumask)) { in hardwall_create()
555 kfree(info); in hardwall_create()
559 list_add_tail(&info->list, &hwt->list); in hardwall_create()
564 hardwall_protect_rectangle(info); in hardwall_create()
567 hardwall_add_proc(info); in hardwall_create()
569 return info; in hardwall_create()
573 static int hardwall_activate(struct hardwall_info *info) in hardwall_activate() argument
582 if (info == NULL) in hardwall_activate()
586 if (info->teardown_in_progress) in hardwall_activate()
599 if (!cpumask_test_cpu(cpu, &info->cpumask)) in hardwall_activate()
603 hwt = info->type; in hardwall_activate()
604 if (ts->hardwall[hwt->index].info) { in hardwall_activate()
605 BUG_ON(ts->hardwall[hwt->index].info != info); in hardwall_activate()
610 ts->hardwall[hwt->index].info = info; in hardwall_activate()
612 list_add(&ts->hardwall[hwt->index].list, &info->task_head); in hardwall_activate()
638 BUG_ON(ts->hardwall[hwt->index].info == NULL); in _hardwall_deactivate()
639 ts->hardwall[hwt->index].info = NULL; in _hardwall_deactivate()
653 activated = (task->thread.hardwall[hwt->index].info != NULL); in hardwall_deactivate()
670 if (task->thread.hardwall[i].info) in hardwall_deactivate_all()
725 struct hardwall_info *info = arg; in drain_xdn_switch() local
726 struct hardwall_type *hwt = info->type; in drain_xdn_switch()
744 atomic_dec(&info->xdn_pending_count); in drain_xdn_switch()
745 while (atomic_read(&info->xdn_pending_count)) in drain_xdn_switch()
851 static void hardwall_destroy(struct hardwall_info *info) in hardwall_destroy() argument
858 if (info == NULL) in hardwall_destroy()
868 hwt = info->type; in hardwall_destroy()
869 info->teardown_in_progress = 1; in hardwall_destroy()
871 list_for_each_entry(task, &info->task_head, in hardwall_destroy()
880 hwt->name, info->width, info->height, in hardwall_destroy()
881 info->ulhc_x, info->ulhc_y); in hardwall_destroy()
882 on_each_cpu_mask(&info->cpumask, stop_xdn_switch, hwt, 1); in hardwall_destroy()
886 atomic_set(&info->xdn_pending_count, in hardwall_destroy()
887 cpumask_weight(&info->cpumask)); in hardwall_destroy()
888 on_each_cpu_mask(&info->cpumask, drain_xdn_switch, info, 0); in hardwall_destroy()
890 on_each_cpu_mask(&info->cpumask, drain_xdn_switch, info, 1); in hardwall_destroy()
894 on_each_cpu_mask(&info->cpumask, restart_xdn_switch, hwt, 1); in hardwall_destroy()
898 hardwall_remove_proc(info); in hardwall_destroy()
902 BUG_ON(!list_empty(&info->task_head)); in hardwall_destroy()
903 list_del(&info->list); in hardwall_destroy()
905 kfree(info); in hardwall_destroy()
911 struct hardwall_info *info = sf->private; in hardwall_proc_show() local
913 seq_printf(sf, "%*pbl\n", cpumask_pr_args(&info->cpumask)); in hardwall_proc_show()
930 static void hardwall_add_proc(struct hardwall_info *info) in hardwall_add_proc() argument
933 snprintf(buf, sizeof(buf), "%d", info->id); in hardwall_add_proc()
934 proc_create_data(buf, 0444, info->type->proc_dir, in hardwall_add_proc()
935 &hardwall_proc_fops, info); in hardwall_add_proc()
938 static void hardwall_remove_proc(struct hardwall_info *info) in hardwall_remove_proc() argument
941 snprintf(buf, sizeof(buf), "%d", info->id); in hardwall_remove_proc()
942 remove_proc_entry(buf, info->type->proc_dir); in hardwall_remove_proc()
951 struct hardwall_info *info = task->thread.hardwall[i].info; in proc_pid_hardwall() local
952 if (info) in proc_pid_hardwall()
953 seq_printf(m, "%s: %d\n", info->type->name, info->id); in proc_pid_hardwall()
978 struct hardwall_info *info = file->private_data; in hardwall_ioctl() local
992 WARN_ON(info && hwt != info->type); in hardwall_ioctl()
998 if (info != NULL) in hardwall_ioctl()
1000 info = hardwall_create(hwt, _IOC_SIZE(a), in hardwall_ioctl()
1002 if (IS_ERR(info)) in hardwall_ioctl()
1003 return PTR_ERR(info); in hardwall_ioctl()
1004 file->private_data = info; in hardwall_ioctl()
1008 return hardwall_activate(info); in hardwall_ioctl()
1011 if (current->thread.hardwall[hwt->index].info != info) in hardwall_ioctl()
1016 return info ? info->id : -EINVAL; in hardwall_ioctl()
1035 struct hardwall_info *info = file->private_data; in hardwall_flush() local
1039 if (info) { in hardwall_flush()
1049 struct hardwall_type *hwt = info->type; in hardwall_flush()
1051 list_for_each_entry_safe(task, tmp, &info->task_head, in hardwall_flush()