Beispiel #1
0
asmlinkage long sys_vperfctr_read(unsigned int domain, void __user *argp,
		unsigned int argbytes)
{
	struct vperfctr *perfctr;
	struct task_struct *tsk;
	int ret;
	
	tsk = current;
	if (IS_ERR(tsk)) {
		printk(KERN_INFO __FILE__ "vperfctr read: tsk is empty\n");
		return PTR_ERR(tsk);
	}

	perfctr = tsk->arch.thread.perfctr;

	if (IS_ERR(perfctr)) {
		printk(KERN_INFO __FILE__ "vperfctr read: perfct is empty\n");
		return PTR_ERR(perfctr);
	}

	ret = do_vperfctr_read(perfctr, domain, argp, argbytes, tsk);
	return ret;
}
asmlinkage long sys_vperfctr_read(int fd, unsigned int cmd, void __user *argp, unsigned int argbytes)
{
	struct vperfctr *perfctr;
	struct task_struct *tsk;
	int ret;

	perfctr = fd_get_vperfctr(fd);
	if (IS_ERR(perfctr)) {
		return PTR_ERR(perfctr);
	}
	tsk = vperfctr_get_tsk(perfctr);
	if (IS_ERR(tsk)) {
		ret = PTR_ERR(tsk);
		goto out;
	}

	ret = do_vperfctr_read(perfctr, cmd, argp, argbytes, tsk);

	vperfctr_put_tsk(tsk);
 out:
	put_vperfctr(perfctr);
	return ret;
}