]> sourceware.org Git - newlib-cygwin.git/blame - winsup/cygwin/cygwait.h
* DevNotes: Add entry cgf-000013.
[newlib-cygwin.git] / winsup / cygwin / cygwait.h
CommitLineData
4ae63783
CF
1/* cygwait.h
2
3 Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
4 Red Hat, Inc.
5
6 This file is part of Cygwin.
7
8 This software is a copyrighted work licensed under the terms of the
9 Cygwin license. Please consult the file "CYGWIN_LICENSE" for
10 details. */
11
12#pragma once
13
2addde8c
CF
14#define WAIT_CANCELED (WAIT_OBJECT_0 + 2)
15#define WAIT_SIGNALED (WAIT_OBJECT_0 + 1)
16
4ae63783
CF
17enum cw_wait_mask
18{
19 cw_cancel = 0x0001,
20 cw_cancel_self = 0x0002,
21 cw_sig = 0x0004,
22 cw_sig_eintr = 0x0008
23};
24
962f9a2c
CF
25extern LARGE_INTEGER cw_nowait_storage;
26#define cw_nowait (&cw_nowait_storage)
27#define cw_infinite ((PLARGE_INTEGER) NULL)
28
4ae63783
CF
29const unsigned cw_std_mask = cw_cancel | cw_cancel_self | cw_sig;
30
31DWORD cancelable_wait (HANDLE, PLARGE_INTEGER timeout = NULL,
32 unsigned = cw_std_mask)
33 __attribute__ ((regparm (3)));
34
b052bf26 35extern inline DWORD __attribute__ ((always_inline))
978441cc 36cancelable_wait (HANDLE h, DWORD howlong, unsigned mask)
4ae63783 37{
4ae63783 38 LARGE_INTEGER li_howlong;
b052bf26 39 PLARGE_INTEGER pli_howlong;
4ae63783
CF
40 if (howlong == INFINITE)
41 pli_howlong = NULL;
42 else
43 {
d6953d3f 44 li_howlong.QuadPart = -(10000ULL * howlong);
4ae63783
CF
45 pli_howlong = &li_howlong;
46 }
978441cc
CF
47 return cancelable_wait (h, pli_howlong, mask);
48}
49
50static inline DWORD __attribute__ ((always_inline))
51cygwait (HANDLE h, DWORD howlong = INFINITE)
52{
53 return cancelable_wait (h, howlong, cw_cancel | cw_sig);
4ae63783
CF
54}
55
56static inline DWORD __attribute__ ((always_inline))
57cygwait (DWORD howlong)
58{
962f9a2c 59 return cygwait (NULL, howlong);
4ae63783 60}
This page took 0.029861 seconds and 5 git commands to generate.