start = page + *ppos; n = s - start;  /* Do nothing if *ppos is at the eof or beyond the eof. */ if (n <= 0) goto out;  retval = n - copy_to_user(buf, start, min(n, nbytes)); *ppos += retval; 
retval = simple_read_from_buffer(buf, nbytes, ppos, page, s - page); 
static ssize_t cpuset_common_file_read(struct file *file, char __user *buf,				size_t nbytes, loff_t *ppos){	struct cftype *cft = __d_cft(file->f_dentry);	struct cpuset *cs = __d_cs(file->f_dentry->d_parent);	cpuset_filetype_t type = cft->private;	char *page;	ssize_t retval = 0;	char *s;	char *start;	ssize_t n;	if (!(page = (char *)__get_free_page(GFP_KERNEL)))		return -ENOMEM;	s = page;	switch (type) {	case FILE_CPULIST:		s += cpuset_sprintf_cpulist(s, cs);		break;	case FILE_MEMLIST:		s += cpuset_sprintf_memlist(s, cs);		break;	case FILE_CPU_EXCLUSIVE:		*s++ = is_cpu_exclusive(cs) ? '1' : '0';		break;	case FILE_MEM_EXCLUSIVE:		*s++ = is_mem_exclusive(cs) ? '1' : '0';		break;	case FILE_NOTIFY_ON_RELEASE:		*s++ = notify_on_release(cs) ? '1' : '0';		break;	default:		retval = -EINVAL;		goto out;	}	*s++ = '\n';	*s = '\0';	start = page + *ppos;	n = s - start;	/* Do nothing if *ppos is at the eof or beyond the eof. */	if (n <= 0)		goto out;	retval = n - copy_to_user(buf, start, min(n, nbytes));	*ppos += retval;out:	free_page((unsigned long)page);	return retval;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/eacaa1f5aa4a41a48349f55abcd9258506943e76/cpuset.c/clean/kernel/cpuset.c