Blame view
include/linux/eventpoll.h
2.01 KB
1da177e4c Linux-2.6.12-rc2 |
1 |
/* |
25985edce Fix common misspe... |
2 |
* include/linux/eventpoll.h ( Efficient event polling implementation ) |
3419b23a9 [PATCH] epoll: us... |
3 |
* Copyright (C) 2001,...,2006 Davide Libenzi |
1da177e4c Linux-2.6.12-rc2 |
4 5 6 7 8 9 10 11 12 |
* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Davide Libenzi <davidel@xmailserver.org> * */ |
1da177e4c Linux-2.6.12-rc2 |
13 14 |
#ifndef _LINUX_EVENTPOLL_H #define _LINUX_EVENTPOLL_H |
607ca46e9 UAPI: (Scripted) ... |
15 |
#include <uapi/linux/eventpoll.h> |
1da177e4c Linux-2.6.12-rc2 |
16 |
|
1da177e4c Linux-2.6.12-rc2 |
17 18 19 20 21 22 23 24 |
/* Forward declarations to avoid compiler errors */ struct file; #ifdef CONFIG_EPOLL /* Used to initialize the epoll bits inside the "struct file" */ |
5a6b7951b [PATCH] get_empty... |
25 26 27 |
static inline void eventpoll_init_file(struct file *file) { INIT_LIST_HEAD(&file->f_ep_links); |
28d82dc1c epoll: limit paths |
28 |
INIT_LIST_HEAD(&file->f_tfile_llink); |
5a6b7951b [PATCH] get_empty... |
29 |
} |
1da177e4c Linux-2.6.12-rc2 |
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
/* Used to release the epoll bits inside the "struct file" */ void eventpoll_release_file(struct file *file); /* * This is called from inside fs/file_table.c:__fput() to unlink files * from the eventpoll interface. We need to have this facility to cleanup * correctly files that are closed without being removed from the eventpoll * interface. */ static inline void eventpoll_release(struct file *file) { /* * Fast check to avoid the get/release of the semaphore. Since * we're doing this outside the semaphore lock, it might return * false negatives, but we don't care. It'll help in 99.99% of cases * to avoid the semaphore lock. False positives simply cannot happen * because the file in on the way to be removed and nobody ( but * eventpoll ) has still a reference to this file. */ if (likely(list_empty(&file->f_ep_links))) return; /* * The file is being closed while it is still linked to an epoll * descriptor. We need to handle this by correctly unlinking it * from its containers. */ eventpoll_release_file(file); } |
1da177e4c Linux-2.6.12-rc2 |
61 62 63 64 65 66 |
#else static inline void eventpoll_init_file(struct file *file) {} static inline void eventpoll_release(struct file *file) {} #endif |
1da177e4c Linux-2.6.12-rc2 |
67 |
#endif /* #ifndef _LINUX_EVENTPOLL_H */ |