… | |
… | |
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 |
394 | extern "C" { |
398 | extern "C" { |
395 | # endif |
399 | # endif |
396 | int eventfd (unsigned int initval, int flags); |
400 | int 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 */ |
1105 | inline_size void |
1109 | inline_size void |
1106 | adjustheap (ANHE *heap, int N, int k) |
1110 | adjustheap (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 */ |