Skip to content

Commit b84e87e

Browse files
authored
Merge pull request swiftlang#113 from frankeh/kevent_nsecs
leverage of new kevent timer granularity functionality
2 parents 325f73d + 374a398 commit b84e87e

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

src/shims/linux_stubs.h

+3
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,13 @@ typedef void (*dispatch_mach_msg_destructor_t)(void*);
8282

8383
#define IGNORE_KEVENT64_EXT /* will force the kevent64_s.ext[] to not be used -> leeway ignored */
8484

85+
#ifndef NOTE_SECONDS
8586
#define NOTE_SECONDS 0x01
8687
#define NOTE_USECONDS 0x02
8788
#define NOTE_NSECONDS 0x04
8889
#define NOTE_ABSOLUTE 0x08
90+
#define KEVENT_NSEC_NOT_SUPPORTED
91+
#endif
8992
#define NOTE_CRITICAL 0x10
9093
#define NOTE_BACKGROUND 0x20
9194
#define NOTE_LEEWAY 0x40

src/source.c

+4
Original file line numberDiff line numberDiff line change
@@ -2341,11 +2341,15 @@ _dispatch_kevent_timer_set_delay(_dispatch_kevent_qos_s *ke, uint64_t delay,
23412341
{
23422342
// call to update nows[]
23432343
_dispatch_source_timer_now(nows, DISPATCH_TIMER_KIND_WALL);
2344+
#if KEVENT_NSEC_NOT_SUPPORTED
23442345
// adjust nsec based delay to msec based and ignore leeway
23452346
delay /= 1000000L;
23462347
if ((int64_t)(delay) <= 0) {
23472348
delay = 1; // if value <= 0 the dispatch will stop
23482349
}
2350+
#else
2351+
ke->fflags |= NOTE_NSECONDS;
2352+
#endif
23492353
ke->data = (int64_t)delay;
23502354
}
23512355

0 commit comments

Comments
 (0)