Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qcore_unix_p.h File Reference

(2a7cacb5e3d2643a7f2cbd6bc861374a7ee926ea)

#include "qplatformdefs.h"
#include <QtCore/private/qglobal_p.h>
#include "qbytearray.h"
#include "qdeadlinetimer.h"
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <sys/select.h>
#include <sys/time.h>
#include <chrono>
#include <sys/wait.h>
#include <errno.h>
#include <fcntl.h>
#include <poll.h>
+ Include dependency graph for qcore_unix_p.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

union  qt_semun
 

Macros

#define QT_EINTR_LOOP(var, cmd)
 
#define QT_OPEN   qt_safe_open
 
#define QT_READ   qt_safe_read
 
#define QT_WRITE   qt_safe_write
 
#define QT_CLOSE   qt_safe_close
 
#define _POSIX_MONOTONIC_CLOCK   -1
 

Functions

QT_BEGIN_NAMESPACE Q_DECLARE_TYPEINFO (pollfd, Q_PRIMITIVE_TYPE)
 
timespec durationToTimespec (std::chrono::nanoseconds timeout) noexcept
 
template<typename Duration >
Duration timespecToChrono (timespec ts) noexcept
 
std::chrono::milliseconds timespecToChronoMs (timespec ts) noexcept
 
constexpr timespec & normalizedTimespec (timespec &t)
 
constexpr bool operator< (const timespec &t1, const timespec &t2)
 
constexpr bool operator== (const timespec &t1, const timespec &t2)
 
constexpr bool operator!= (const timespec &t1, const timespec &t2)
 
constexpr timespec & operator+= (timespec &t1, const timespec &t2)
 
constexpr timespec operator+ (const timespec &t1, const timespec &t2)
 
constexpr timespec operator- (const timespec &t1, const timespec &t2)
 
constexpr timespec operator* (const timespec &t1, int mul)
 
timeval timespecToTimeval (timespec ts)
 
timespec & operator+= (timespec &t1, std::chrono::milliseconds msecs)
 
timespec & operator+= (timespec &t1, int ms)
 
timespec operator+ (const timespec &t1, std::chrono::milliseconds msecs)
 
timespec operator+ (const timespec &t1, int ms)
 
timespec qAbsTimespec (timespec ts)
 
template<clockid_t ClockId = SteadyClockClockId>
timespec deadlineToAbstime (QDeadlineTimer deadline)
 
Q_CORE_EXPORT void qt_ignore_sigpipe () noexcept
 
static int qt_safe_open (const char *pathname, int flags, mode_t mode=0777)
 
static int qt_safe_pipe (int pipefd[2], int flags=0)
 
static int qt_safe_dup (int oldfd, int atleast=0, int flags=FD_CLOEXEC)
 
static int qt_safe_dup2 (int oldfd, int newfd, int flags=FD_CLOEXEC)
 
static qint64 qt_safe_read (int fd, void *data, qint64 maxlen)
 
static qint64 qt_safe_write (int fd, const void *data, qint64 len)
 
static qint64 qt_safe_write_nosignal (int fd, const void *data, qint64 len)
 
static int qt_safe_close (int fd)
 
QByteArray qt_readlink (const char *path)
 
bool qt_haveLinuxProcfs ()
 
Q_CORE_EXPORT int qt_safe_poll (struct pollfd *fds, nfds_t nfds, QDeadlineTimer deadline)
 
static struct pollfd qt_make_pollfd (int fd, short events)
 

Variables

static constexpr clockid_t SteadyClockClockId
 
static constexpr clockid_t QWaitConditionClockId
 
static constexpr auto OneSecAsNsecs = std::chrono::nanoseconds(std::chrono::seconds{ 1 }).count()
 

Macro Definition Documentation

◆ _POSIX_MONOTONIC_CLOCK

#define _POSIX_MONOTONIC_CLOCK   -1

Definition at line 412 of file qcore_unix_p.h.

◆ QT_CLOSE

#define QT_CLOSE   qt_safe_close

Definition at line 377 of file qcore_unix_p.h.

◆ QT_EINTR_LOOP

#define QT_EINTR_LOOP ( var,
cmd )
Value:
do { \
var = cmd; \
} while (var == -1 && errno == EINTR)

Definition at line 59 of file qcore_unix_p.h.

◆ QT_OPEN

#define QT_OPEN   qt_safe_open

Definition at line 271 of file qcore_unix_p.h.

◆ QT_READ

#define QT_READ   qt_safe_read

Definition at line 353 of file qcore_unix_p.h.

◆ QT_WRITE

#define QT_WRITE   qt_safe_write

Definition at line 362 of file qcore_unix_p.h.

Function Documentation

◆ deadlineToAbstime()

template<clockid_t ClockId = SteadyClockClockId>
timespec deadlineToAbstime ( QDeadlineTimer deadline)
inline

Definition at line 222 of file qcore_unix_p.h.

◆ durationToTimespec()

timespec durationToTimespec ( std::chrono::nanoseconds timeout)
inlinenoexcept

Definition at line 108 of file qcore_unix_p.h.

◆ normalizedTimespec()

timespec & normalizedTimespec ( timespec & t)
inlineconstexpr

Definition at line 132 of file qcore_unix_p.h.

Referenced by operator*(), operator+(), operator+=(), operator-(), and qAbsTimespec().

+ Here is the caller graph for this function:

◆ operator!=()

bool operator!= ( const timespec & t1,
const timespec & t2 )
inlineconstexpr

Definition at line 148 of file qcore_unix_p.h.

References operator==().

+ Here is the call graph for this function:

◆ operator*()

timespec operator* ( const timespec & t1,
int mul )
inlineconstexpr

Definition at line 170 of file qcore_unix_p.h.

References normalizedTimespec().

+ Here is the call graph for this function:

◆ operator+() [1/3]

timespec operator+ ( const timespec & t1,
const timespec & t2 )
inlineconstexpr

Definition at line 156 of file qcore_unix_p.h.

References normalizedTimespec().

+ Here is the call graph for this function:

◆ operator+() [2/3]

timespec operator+ ( const timespec & t1,
int ms )
inline

Definition at line 204 of file qcore_unix_p.h.

◆ operator+() [3/3]

timespec operator+ ( const timespec & t1,
std::chrono::milliseconds msecs )
inline

Definition at line 197 of file qcore_unix_p.h.

◆ operator+=() [1/3]

timespec & operator+= ( timespec & t1,
const timespec & t2 )
inlineconstexpr

Definition at line 150 of file qcore_unix_p.h.

References normalizedTimespec().

+ Here is the call graph for this function:

◆ operator+=() [2/3]

timespec & operator+= ( timespec & t1,
int ms )
inline

Definition at line 191 of file qcore_unix_p.h.

◆ operator+=() [3/3]

timespec & operator+= ( timespec & t1,
std::chrono::milliseconds msecs )
inline

Definition at line 185 of file qcore_unix_p.h.

◆ operator-()

timespec operator- ( const timespec & t1,
const timespec & t2 )
inlineconstexpr

Definition at line 163 of file qcore_unix_p.h.

References normalizedTimespec().

+ Here is the call graph for this function:

◆ operator<()

bool operator< ( const timespec & t1,
const timespec & t2 )
inlineconstexpr

Definition at line 144 of file qcore_unix_p.h.

◆ operator==()

bool operator== ( const timespec & t1,
const timespec & t2 )
inlineconstexpr

Definition at line 146 of file qcore_unix_p.h.

Referenced by operator!=().

+ Here is the caller graph for this function:

◆ Q_DECLARE_TYPEINFO()

QT_BEGIN_NAMESPACE Q_DECLARE_TYPEINFO ( pollfd ,
Q_PRIMITIVE_TYPE  )

◆ qAbsTimespec()

timespec qAbsTimespec ( timespec ts)
inline

Definition at line 209 of file qcore_unix_p.h.

References normalizedTimespec().

+ Here is the call graph for this function:

◆ qt_haveLinuxProcfs()

bool qt_haveLinuxProcfs ( )
inline

Definition at line 418 of file qcore_unix_p.h.

◆ qt_ignore_sigpipe()

Q_CORE_EXPORT void qt_ignore_sigpipe ( )
noexcept

Definition at line 23 of file qcore_unix.cpp.

◆ qt_make_pollfd()

static struct pollfd qt_make_pollfd ( int fd,
short events )
inlinestatic

Definition at line 434 of file qcore_unix_p.h.

◆ qt_readlink()

QByteArray qt_readlink ( const char * path)

Definition at line 38 of file qcore_unix.cpp.

◆ qt_safe_close()

static int qt_safe_close ( int fd)
inlinestatic

Definition at line 370 of file qcore_unix_p.h.

◆ qt_safe_dup()

static int qt_safe_dup ( int oldfd,
int atleast = 0,
int flags = FD_CLOEXEC )
inlinestatic

Definition at line 305 of file qcore_unix_p.h.

◆ qt_safe_dup2()

static int qt_safe_dup2 ( int oldfd,
int newfd,
int flags = FD_CLOEXEC )
inlinestatic

Definition at line 326 of file qcore_unix_p.h.

◆ qt_safe_open()

static int qt_safe_open ( const char * pathname,
int flags,
mode_t mode = 0777 )
inlinestatic

Definition at line 255 of file qcore_unix_p.h.

◆ qt_safe_pipe()

static int qt_safe_pipe ( int pipefd[2],
int flags = 0 )
inlinestatic

Definition at line 276 of file qcore_unix_p.h.

◆ qt_safe_poll()

Q_CORE_EXPORT int qt_safe_poll ( struct pollfd * fds,
nfds_t nfds,
QDeadlineTimer deadline )

Behaves as close to POSIX poll(2) as practical but may be implemented using select(2) where necessary. In that case, returns -1 and sets errno to EINVAL if passed any descriptor greater than or equal to FD_SETSIZE.

Definition at line 121 of file qcore_unix.cpp.

References qt_ppoll().

+ Here is the call graph for this function:

◆ qt_safe_read()

static qint64 qt_safe_read ( int fd,
void * data,
qint64 maxlen )
inlinestatic

Definition at line 346 of file qcore_unix_p.h.

◆ qt_safe_write()

static qint64 qt_safe_write ( int fd,
const void * data,
qint64 len )
inlinestatic

Definition at line 355 of file qcore_unix_p.h.

◆ qt_safe_write_nosignal()

static qint64 qt_safe_write_nosignal ( int fd,
const void * data,
qint64 len )
inlinestatic

Definition at line 364 of file qcore_unix_p.h.

◆ timespecToChrono()

template<typename Duration >
Duration timespecToChrono ( timespec ts)
inlinenoexcept

Definition at line 120 of file qcore_unix_p.h.

◆ timespecToChronoMs()

std::chrono::milliseconds timespecToChronoMs ( timespec ts)
inlinenoexcept

Definition at line 126 of file qcore_unix_p.h.

◆ timespecToTimeval()

timeval timespecToTimeval ( timespec ts)
inline

Definition at line 177 of file qcore_unix_p.h.

Referenced by qt_poll().

+ Here is the caller graph for this function:

Variable Documentation

◆ OneSecAsNsecs

auto OneSecAsNsecs = std::chrono::nanoseconds(std::chrono::seconds{ 1 }).count()
staticconstexpr

Definition at line 106 of file qcore_unix_p.h.

◆ QWaitConditionClockId

clockid_t QWaitConditionClockId
inlinestaticconstexpr
Initial value:
=
CLOCK_REALTIME

Definition at line 91 of file qcore_unix_p.h.

◆ SteadyClockClockId

clockid_t SteadyClockClockId
inlinestaticconstexpr
Initial value:
=
CLOCK_REALTIME

Definition at line 68 of file qcore_unix_p.h.