Use high-resolution timebases for select().
* cygwait.h: Add cygwait_us() methods. * select.h: Change prototype for select_stuff::wait() for larger microsecond timeouts. * select.cc (pselect): Convert from old cygwin_select(). Implement microsecond timeouts. (cygwin_select): Rewrite as a wrapper on pselect(). (select): Implement microsecond timeouts. (select_stuff::wait): Implement microsecond timeouts with a timer object.
This commit is contained in:
committed by
Corinna Vinschen
parent
313fcaf1bc
commit
6e70fd315a
@@ -59,3 +59,30 @@ cygwait (DWORD howlong)
|
||||
{
|
||||
return cygwait (NULL, howlong);
|
||||
}
|
||||
|
||||
extern inline DWORD __attribute__ ((always_inline))
|
||||
cygwait_us (HANDLE h, LONGLONG howlong, unsigned mask)
|
||||
{
|
||||
LARGE_INTEGER li_howlong;
|
||||
PLARGE_INTEGER pli_howlong;
|
||||
if (howlong < 0LL)
|
||||
pli_howlong = NULL;
|
||||
else
|
||||
{
|
||||
li_howlong.QuadPart = -(10LL * howlong);
|
||||
pli_howlong = &li_howlong;
|
||||
}
|
||||
return cygwait (h, pli_howlong, mask);
|
||||
}
|
||||
|
||||
static inline DWORD __attribute__ ((always_inline))
|
||||
cygwait_us (HANDLE h, LONGLONG howlong = -1)
|
||||
{
|
||||
return cygwait_us (h, howlong, cw_cancel | cw_sig);
|
||||
}
|
||||
|
||||
static inline DWORD __attribute__ ((always_inline))
|
||||
cygwait_us (LONGLONG howlong)
|
||||
{
|
||||
return cygwait_us (NULL, howlong);
|
||||
}
|
||||
|
Reference in New Issue
Block a user