blob: d2aee11c9aac8adc2cfdcf34cd1cfcc932584dbe [file] [log] [blame]
[email protected]157c61b2009-05-01 21:37:311// Copyright (c) 2009 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// This provides a wrapper around system calls which may be interrupted by a
6// signal and return EINTR. See man 7 signal.
7//
8// On Windows, this wrapper macro does nothing.
9
10#ifndef BASE_EINTR_WRAPPER_H_
11#define BASE_EINTR_WRAPPER_H_
12
13#include "build/build_config.h"
14
15#if defined(OS_POSIX)
16
17#include <errno.h>
18
19#define HANDLE_EINTR(x) ({ \
20 typeof(x) __eintr_result__; \
21 do { \
22 __eintr_result__ = x; \
23 } while (__eintr_result__ == -1 && errno == EINTR); \
24 __eintr_result__;\
25})
26
27#else
28
29#define HANDLE_EINTR(x) x
30
31#endif // OS_POSIX
32
[email protected]2fdc86a2010-01-26 23:08:0233#endif // BASE_EINTR_WRAPPER_H_