(root)/
Python-3.11.7/
Modules/
_multiprocessing/
multiprocessing.h
       1  #ifndef MULTIPROCESSING_H
       2  #define MULTIPROCESSING_H
       3  
       4  #define PY_SSIZE_T_CLEAN
       5  
       6  #include "Python.h"
       7  #include "structmember.h"
       8  #include "pythread.h"
       9  
      10  /*
      11   * Platform includes and definitions
      12   */
      13  
      14  #ifdef MS_WINDOWS
      15  #  define WIN32_LEAN_AND_MEAN
      16  #  include <windows.h>
      17  #  include <winsock2.h>
      18  #  include <process.h>               /* getpid() */
      19  #  ifdef Py_DEBUG
      20  #    include <crtdbg.h>
      21  #  endif
      22  #  define SEM_HANDLE HANDLE
      23  #  define SEM_VALUE_MAX LONG_MAX
      24  #  define HAVE_MP_SEMAPHORE
      25  #else
      26  #  include <fcntl.h>                 /* O_CREAT and O_EXCL */
      27  #  if defined(HAVE_SEM_OPEN) && !defined(POSIX_SEMAPHORES_NOT_ENABLED)
      28  #    define HAVE_MP_SEMAPHORE
      29  #    include <semaphore.h>
      30       typedef sem_t *SEM_HANDLE;
      31  #  endif
      32  #endif
      33  
      34  /*
      35   * Issue 3110 - Solaris does not define SEM_VALUE_MAX
      36   */
      37  #ifndef SEM_VALUE_MAX
      38      #if defined(HAVE_SYSCONF) && defined(_SC_SEM_VALUE_MAX)
      39          # define SEM_VALUE_MAX sysconf(_SC_SEM_VALUE_MAX)
      40      #elif defined(_SEM_VALUE_MAX)
      41          # define SEM_VALUE_MAX _SEM_VALUE_MAX
      42      #elif defined(_POSIX_SEM_VALUE_MAX)
      43          # define SEM_VALUE_MAX _POSIX_SEM_VALUE_MAX
      44      #else
      45          # define SEM_VALUE_MAX INT_MAX
      46      #endif
      47  #endif
      48  
      49  
      50  /*
      51   * Format codes
      52   */
      53  
      54  #if SIZEOF_VOID_P == SIZEOF_LONG
      55  #  define F_POINTER "k"
      56  #  define T_POINTER T_ULONG
      57  #elif SIZEOF_VOID_P == SIZEOF_LONG_LONG
      58  #  define F_POINTER "K"
      59  #  define T_POINTER T_ULONGLONG
      60  #else
      61  #  error "can't find format code for unsigned integer of same size as void*"
      62  #endif
      63  
      64  #ifdef MS_WINDOWS
      65  #  define F_HANDLE F_POINTER
      66  #  define T_HANDLE T_POINTER
      67  #  define F_SEM_HANDLE F_HANDLE
      68  #  define T_SEM_HANDLE T_HANDLE
      69  #else
      70  #  define F_HANDLE "i"
      71  #  define T_HANDLE T_INT
      72  #  define F_SEM_HANDLE F_POINTER
      73  #  define T_SEM_HANDLE T_POINTER
      74  #endif
      75  
      76  /*
      77   * Error codes which can be returned by functions called without GIL
      78   */
      79  
      80  #define MP_SUCCESS (0)
      81  #define MP_STANDARD_ERROR (-1)
      82  #define MP_MEMORY_ERROR (-1001)
      83  #define MP_SOCKET_ERROR (-1002)
      84  #define MP_EXCEPTION_HAS_BEEN_SET (-1003)
      85  
      86  PyObject *_PyMp_SetError(PyObject *Type, int num);
      87  
      88  /*
      89   * Externs - not all will really exist on all platforms
      90   */
      91  
      92  extern PyTypeObject _PyMp_SemLockType;
      93  extern PyObject *_PyMp_sem_unlink(const char *name);
      94  
      95  #endif /* MULTIPROCESSING_H */