1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
/*
* Copyright © 2020, VideoLAN and librist authors
* Copyright © 2019-2020 SipRadius LLC
* All rights reserved.
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#ifndef RIST_COMMON_ATTRIBUTES_H
#define RIST_COMMON_ATTRIBUTES_H
/* Reference: http://gcc.gnu.org/wiki/Visibility */
#if defined(_WIN32) || defined(__CYGWIN__)
# define RIST_PRIV
#else /* defined(_WIN32) || defined(__CYGWIN__) */
# if __GNUC__ >= 4
# define RIST_PRIV __attribute__ ((visibility ("hidden")))
# else /* __GNUC__ >= 4 */
# define RIST_PRIV
# endif /* __GNUC__ >= 4 */
#endif /* defined(_WIN32) || defined(__CYGWIN__) */
#ifdef _WIN32
#if defined(__GNUC__)
# define RIST_PACKED_STRUCT(sname,sbody) \
struct __attribute__((packed)) sname sbody;
#else
# define RIST_PACKED_STRUCT(sname,sbody) \
__pragma( pack(push, 1) ) \
struct sname sbody; \
__pragma( pack(pop) )
#endif
#else
# define RIST_PACKED_STRUCT(sname,sbody) \
struct __attribute__((packed)) sname sbody;
#endif
/* Branch prediction */
#ifdef __GNUC__
# define RIST_LIKELY(p) __builtin_expect(!!(p), 1)
# define RIST_UNLIKELY(p) __builtin_expect(!!(p), 0)
#else
# define RIST_LIKELY(p) (!!(p))
# define RIST_UNLIKELY(p) (!!(p))
#endif
#define RIST_MARK_UNUSED(unused_param) ((void)(unused_param))
#if defined(__GNUC__) && __GNUC__ >= 7
#define RIST_FALLTHROUGH ; __attribute__ ((fallthrough))
#else
#define RIST_FALLTHROUGH ((void)0)
#endif /* __GNUC__ >= 7 */
#ifdef _WIN32
#ifdef _WIN64
#ifdef __GNUC__
#ifndef __MINGW32__
typedef long long ssize_t;
enum
{
POLLERR=0x1,
POLLHUP=0x2,
POLLNVAL=0x4,
POLLWRNORM=0x10,
POLLWRBAND=0x20,
POLLRDNORM=0x100,
POLLRDBAND=0x200,
POLLPRI=0x400,
};
#define POLLIN (POLLRDNORM|POLLRDBAND)
#define POLLOUT (POLLWRNORM|POLLWRBAND)
struct pollfd
{
int fd;
unsigned events;
unsigned revents;
};
struct pollfd;
#endif
#else
#include <stdint.h>
typedef int64_t ssize_t;
#endif
#else
typedef signed int ssize_t;
#endif
#endif
#define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x)
#endif
|