mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	Get rid of circular import and eliminate unprefixed exported symbols
from _multiprocessing.
This commit is contained in:
		
							parent
							
								
									81901490a0
								
							
						
					
					
						commit
						8fb9f4cf7b
					
				
					 3 changed files with 15 additions and 26 deletions
				
			
		| 
						 | 
				
			
			@ -10,14 +10,12 @@
 | 
			
		|||
#include "multiprocessing.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
PyObject *ProcessError, *BufferTooShort;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Function which raises exceptions based on error codes
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
PyObject *
 | 
			
		||||
mp_SetError(PyObject *Type, int num)
 | 
			
		||||
_PyMp_SetError(PyObject *Type, int num)
 | 
			
		||||
{
 | 
			
		||||
    switch (num) {
 | 
			
		||||
#ifdef MS_WINDOWS
 | 
			
		||||
| 
						 | 
				
			
			@ -159,19 +157,12 @@ PyInit__multiprocessing(void)
 | 
			
		|||
    if (!module)
 | 
			
		||||
        return NULL;
 | 
			
		||||
 | 
			
		||||
    /* Get copy of BufferTooShort */
 | 
			
		||||
    temp = PyImport_ImportModule("multiprocessing");
 | 
			
		||||
    if (!temp)
 | 
			
		||||
        return NULL;
 | 
			
		||||
    BufferTooShort = PyObject_GetAttrString(temp, "BufferTooShort");
 | 
			
		||||
    Py_XDECREF(temp);
 | 
			
		||||
 | 
			
		||||
#if defined(MS_WINDOWS) ||                                              \
 | 
			
		||||
  (defined(HAVE_SEM_OPEN) && !defined(POSIX_SEMAPHORES_NOT_ENABLED))
 | 
			
		||||
    /* Add SemLock type to module */
 | 
			
		||||
    if (PyType_Ready(&SemLockType) < 0)
 | 
			
		||||
    /* Add _PyMp_SemLock type to module */
 | 
			
		||||
    if (PyType_Ready(&_PyMp_SemLockType) < 0)
 | 
			
		||||
        return NULL;
 | 
			
		||||
    Py_INCREF(&SemLockType);
 | 
			
		||||
    Py_INCREF(&_PyMp_SemLockType);
 | 
			
		||||
    {
 | 
			
		||||
        PyObject *py_sem_value_max;
 | 
			
		||||
        /* Some systems define SEM_VALUE_MAX as an unsigned value that
 | 
			
		||||
| 
						 | 
				
			
			@ -182,10 +173,10 @@ PyInit__multiprocessing(void)
 | 
			
		|||
            py_sem_value_max = PyLong_FromLong(SEM_VALUE_MAX);
 | 
			
		||||
        if (py_sem_value_max == NULL)
 | 
			
		||||
            return NULL;
 | 
			
		||||
        PyDict_SetItemString(SemLockType.tp_dict, "SEM_VALUE_MAX",
 | 
			
		||||
        PyDict_SetItemString(_PyMp_SemLockType.tp_dict, "SEM_VALUE_MAX",
 | 
			
		||||
                             py_sem_value_max);
 | 
			
		||||
    }
 | 
			
		||||
    PyModule_AddObject(module, "SemLock", (PyObject*)&SemLockType);
 | 
			
		||||
    PyModule_AddObject(module, "SemLock", (PyObject*)&_PyMp_SemLockType);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    /* Add configuration macros */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -91,15 +91,13 @@
 | 
			
		|||
#define MP_SOCKET_ERROR (-1002)
 | 
			
		||||
#define MP_EXCEPTION_HAS_BEEN_SET (-1003)
 | 
			
		||||
 | 
			
		||||
PyObject *mp_SetError(PyObject *Type, int num);
 | 
			
		||||
PyObject *_PyMp_SetError(PyObject *Type, int num);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Externs - not all will really exist on all platforms
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
extern PyObject *BufferTooShort;
 | 
			
		||||
extern PyTypeObject SemLockType;
 | 
			
		||||
extern PyTypeObject PipeConnectionType;
 | 
			
		||||
extern PyTypeObject _PyMp_SemLockType;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Miscellaneous
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -193,7 +193,7 @@ semlock_release(SemLockObject *self, PyObject *args)
 | 
			
		|||
#ifndef HAVE_SEM_TIMEDWAIT
 | 
			
		||||
#  define sem_timedwait(sem,deadline) sem_timedwait_save(sem,deadline,_save)
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
sem_timedwait_save(sem_t *sem, struct timespec *deadline, PyThreadState *_save)
 | 
			
		||||
{
 | 
			
		||||
    int res;
 | 
			
		||||
| 
						 | 
				
			
			@ -444,7 +444,7 @@ semlock_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
 | 
			
		|||
  failure:
 | 
			
		||||
    if (handle != SEM_FAILED)
 | 
			
		||||
        SEM_CLOSE(handle);
 | 
			
		||||
    mp_SetError(NULL, MP_STANDARD_ERROR);
 | 
			
		||||
    _PyMp_SetError(NULL, MP_STANDARD_ERROR);
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -491,7 +491,7 @@ semlock_getvalue(SemLockObject *self)
 | 
			
		|||
#else
 | 
			
		||||
    int sval;
 | 
			
		||||
    if (SEM_GETVALUE(self->handle, &sval) < 0)
 | 
			
		||||
        return mp_SetError(NULL, MP_STANDARD_ERROR);
 | 
			
		||||
        return _PyMp_SetError(NULL, MP_STANDARD_ERROR);
 | 
			
		||||
    /* some posix implementations use negative numbers to indicate
 | 
			
		||||
       the number of waiting threads */
 | 
			
		||||
    if (sval < 0)
 | 
			
		||||
| 
						 | 
				
			
			@ -507,16 +507,16 @@ semlock_iszero(SemLockObject *self)
 | 
			
		|||
    if (sem_trywait(self->handle) < 0) {
 | 
			
		||||
        if (errno == EAGAIN)
 | 
			
		||||
            Py_RETURN_TRUE;
 | 
			
		||||
        return mp_SetError(NULL, MP_STANDARD_ERROR);
 | 
			
		||||
        return _PyMp_SetError(NULL, MP_STANDARD_ERROR);
 | 
			
		||||
    } else {
 | 
			
		||||
        if (sem_post(self->handle) < 0)
 | 
			
		||||
            return mp_SetError(NULL, MP_STANDARD_ERROR);
 | 
			
		||||
            return _PyMp_SetError(NULL, MP_STANDARD_ERROR);
 | 
			
		||||
        Py_RETURN_FALSE;
 | 
			
		||||
    }
 | 
			
		||||
#else
 | 
			
		||||
    int sval;
 | 
			
		||||
    if (SEM_GETVALUE(self->handle, &sval) < 0)
 | 
			
		||||
        return mp_SetError(NULL, MP_STANDARD_ERROR);
 | 
			
		||||
        return _PyMp_SetError(NULL, MP_STANDARD_ERROR);
 | 
			
		||||
    return PyBool_FromLong((long)sval == 0);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -574,7 +574,7 @@ static PyMemberDef semlock_members[] = {
 | 
			
		|||
 * Semaphore type
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
PyTypeObject SemLockType = {
 | 
			
		||||
PyTypeObject _PyMp_SemLockType = {
 | 
			
		||||
    PyVarObject_HEAD_INIT(NULL, 0)
 | 
			
		||||
    /* tp_name           */ "_multiprocessing.SemLock",
 | 
			
		||||
    /* tp_basicsize      */ sizeof(SemLockObject),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue