Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5a6b7951 authored by Benjamin LaHaise's avatar Benjamin LaHaise Committed by Linus Torvalds
Browse files

[PATCH] get_empty_filp tweaks, inline epoll_init_file()



Eliminate a handful of cache references by keeping current in a register
instead of reloading (helps x86) and avoiding the overhead of a function
call.  Inlining eventpoll_init_file() saves 24 bytes.  Also reorder file
initialization to make writes occur more sequentially.

Signed-off-by: default avatarBenjamin LaHaise <bcrl@linux.intel.com>
Cc: Davide Libenzi <davidel@xmailserver.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 0b2fcfdb
Loading
Loading
Loading
Loading
+0 −9
Original line number Diff line number Diff line
@@ -452,15 +452,6 @@ static void ep_poll_safewake(struct poll_safewake *psw, wait_queue_head_t *wq)
}


/* Used to initialize the epoll bits inside the "struct file" */
void eventpoll_init_file(struct file *file)
{

	INIT_LIST_HEAD(&file->f_ep_links);
	spin_lock_init(&file->f_ep_lock);
}


/*
 * This is called from eventpoll_release() to unlink files from the eventpoll
 * interface. We need to have this facility to cleanup correctly files that are
+6 −4
Original line number Diff line number Diff line
@@ -88,6 +88,7 @@ int proc_nr_files(ctl_table *table, int write, struct file *filp,
 */
struct file *get_empty_filp(void)
{
	struct task_struct *tsk;
	static int old_max;
	struct file * f;

@@ -112,13 +113,14 @@ struct file *get_empty_filp(void)
	if (security_file_alloc(f))
		goto fail_sec;

	eventpoll_init_file(f);
	tsk = current;
	INIT_LIST_HEAD(&f->f_u.fu_list);
	atomic_set(&f->f_count, 1);
	f->f_uid = current->fsuid;
	f->f_gid = current->fsgid;
	rwlock_init(&f->f_owner.lock);
	f->f_uid = tsk->fsuid;
	f->f_gid = tsk->fsgid;
	eventpoll_init_file(f);
	/* f->f_version: 0 */
	INIT_LIST_HEAD(&f->f_u.fu_list);
	return f;

over:
+6 −2
Original line number Diff line number Diff line
@@ -52,7 +52,12 @@ struct file;
#ifdef CONFIG_EPOLL

/* Used to initialize the epoll bits inside the "struct file" */
void eventpoll_init_file(struct file *file);
static inline void eventpoll_init_file(struct file *file)
{
	INIT_LIST_HEAD(&file->f_ep_links);
	spin_lock_init(&file->f_ep_lock);
}


/* Used to release the epoll bits inside the "struct file" */
void eventpoll_release_file(struct file *file);
@@ -85,7 +90,6 @@ static inline void eventpoll_release(struct file *file)
	eventpoll_release_file(file);
}


#else

static inline void eventpoll_init_file(struct file *file) {}