ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.c
(Generate patch)

Comparing libev/ev.c (file contents):
Revision 1.308 by root, Sun Jul 19 20:39:54 2009 UTC vs.
Revision 1.312 by root, Wed Aug 12 18:48:17 2009 UTC

386# include <stdint.h> 386# include <stdint.h>
387# ifndef EFD_NONBLOCK 387# ifndef EFD_NONBLOCK
388# define EFD_NONBLOCK O_NONBLOCK 388# define EFD_NONBLOCK O_NONBLOCK
389# endif 389# endif
390# ifndef EFD_CLOEXEC 390# ifndef EFD_CLOEXEC
391# ifdef O_CLOEXEC
391# define EFD_CLOEXEC O_CLOEXEC 392# define EFD_CLOEXEC O_CLOEXEC
393# else
394# define EFD_CLOEXEC 02000000
395# endif
392# endif 396# endif
393# ifdef __cplusplus 397# ifdef __cplusplus
394extern "C" { 398extern "C" {
395# endif 399# endif
396int eventfd (unsigned int initval, int flags); 400int eventfd (unsigned int initval, int flags);
1057 1061
1058 for (;;) 1062 for (;;)
1059 { 1063 {
1060 int c = k << 1; 1064 int c = k << 1;
1061 1065
1062 if (c > N + HEAP0 - 1) 1066 if (c >= N + HEAP0)
1063 break; 1067 break;
1064 1068
1065 c += c + 1 < N + HEAP0 && ANHE_at (heap [c]) > ANHE_at (heap [c + 1]) 1069 c += c + 1 < N + HEAP0 && ANHE_at (heap [c]) > ANHE_at (heap [c + 1])
1066 ? 1 : 0; 1070 ? 1 : 0;
1067 1071
1103 1107
1104/* move an element suitably so it is in a correct place */ 1108/* move an element suitably so it is in a correct place */
1105inline_size void 1109inline_size void
1106adjustheap (ANHE *heap, int N, int k) 1110adjustheap (ANHE *heap, int N, int k)
1107{ 1111{
1108 if (k > HEAP0 && ANHE_at (heap [HPARENT (k)]) >= ANHE_at (heap [k])) 1112 if (k > HEAP0 && ANHE_at (heap [k]) <= ANHE_at (heap [HPARENT (k)]))
1109 upheap (heap, k); 1113 upheap (heap, k);
1110 else 1114 else
1111 downheap (heap, N, k); 1115 downheap (heap, N, k);
1112} 1116}
1113 1117
2857 } 2861 }
2858 } 2862 }
2859 2863
2860 if (w->wd >= 0) 2864 if (w->wd >= 0)
2861 { 2865 {
2866 struct statfs sfs;
2867
2862 wlist_add (&fs_hash [w->wd & (EV_INOTIFY_HASHSIZE - 1)].head, (WL)w); 2868 wlist_add (&fs_hash [w->wd & (EV_INOTIFY_HASHSIZE - 1)].head, (WL)w);
2863 2869
2864 /* now local changes will be tracked by inotify, but remote changes won't */ 2870 /* now local changes will be tracked by inotify, but remote changes won't */
2865 /* unless the filesystem it known to be local, we therefore still poll */ 2871 /* unless the filesystem it known to be local, we therefore still poll */
2866 /* also do poll on <2.6.25, but with normal frequency */ 2872 /* also do poll on <2.6.25, but with normal frequency */
2867 struct statfs sfs;
2868 2873
2869 if (fs_2625 && !statfs (w->path, &sfs)) 2874 if (fs_2625 && !statfs (w->path, &sfs))
2870 if (sfs.f_type == 0x1373 /* devfs */ 2875 if (sfs.f_type == 0x1373 /* devfs */
2871 || sfs.f_type == 0xEF53 /* ext2/3 */ 2876 || sfs.f_type == 0xEF53 /* ext2/3 */
2872 || sfs.f_type == 0x3153464a /* jfs */ 2877 || sfs.f_type == 0x3153464a /* jfs */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines