123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545 |
- /*[clinic input]
- preserve
- [clinic start generated code]*/
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- # include "pycore_gc.h" // PyGC_Head
- # include "pycore_runtime.h" // _Py_ID()
- #endif
- #if defined(HAVE_MP_SEMAPHORE) && defined(MS_WINDOWS)
- PyDoc_STRVAR(_multiprocessing_SemLock_acquire__doc__,
- "acquire($self, /, block=True, timeout=None)\n"
- "--\n"
- "\n"
- "Acquire the semaphore/lock.");
- #define _MULTIPROCESSING_SEMLOCK_ACQUIRE_METHODDEF \
- {"acquire", _PyCFunction_CAST(_multiprocessing_SemLock_acquire), METH_FASTCALL|METH_KEYWORDS, _multiprocessing_SemLock_acquire__doc__},
- static PyObject *
- _multiprocessing_SemLock_acquire_impl(SemLockObject *self, int blocking,
- PyObject *timeout_obj);
- static PyObject *
- _multiprocessing_SemLock_acquire(SemLockObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- #define NUM_KEYWORDS 2
- static struct {
- PyGC_Head _this_is_not_used;
- PyObject_VAR_HEAD
- PyObject *ob_item[NUM_KEYWORDS];
- } _kwtuple = {
- .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(block), &_Py_ID(timeout), },
- };
- #undef NUM_KEYWORDS
- #define KWTUPLE (&_kwtuple.ob_base.ob_base)
- #else // !Py_BUILD_CORE
- # define KWTUPLE NULL
- #endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"block", "timeout", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "acquire",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[2];
- Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
- int blocking = 1;
- PyObject *timeout_obj = Py_None;
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- if (!noptargs) {
- goto skip_optional_pos;
- }
- if (args[0]) {
- blocking = PyObject_IsTrue(args[0]);
- if (blocking < 0) {
- goto exit;
- }
- if (!--noptargs) {
- goto skip_optional_pos;
- }
- }
- timeout_obj = args[1];
- skip_optional_pos:
- return_value = _multiprocessing_SemLock_acquire_impl(self, blocking, timeout_obj);
- exit:
- return return_value;
- }
- #endif /* defined(HAVE_MP_SEMAPHORE) && defined(MS_WINDOWS) */
- #if defined(HAVE_MP_SEMAPHORE) && defined(MS_WINDOWS)
- PyDoc_STRVAR(_multiprocessing_SemLock_release__doc__,
- "release($self, /)\n"
- "--\n"
- "\n"
- "Release the semaphore/lock.");
- #define _MULTIPROCESSING_SEMLOCK_RELEASE_METHODDEF \
- {"release", (PyCFunction)_multiprocessing_SemLock_release, METH_NOARGS, _multiprocessing_SemLock_release__doc__},
- static PyObject *
- _multiprocessing_SemLock_release_impl(SemLockObject *self);
- static PyObject *
- _multiprocessing_SemLock_release(SemLockObject *self, PyObject *Py_UNUSED(ignored))
- {
- return _multiprocessing_SemLock_release_impl(self);
- }
- #endif /* defined(HAVE_MP_SEMAPHORE) && defined(MS_WINDOWS) */
- #if defined(HAVE_MP_SEMAPHORE) && !defined(MS_WINDOWS)
- PyDoc_STRVAR(_multiprocessing_SemLock_acquire__doc__,
- "acquire($self, /, block=True, timeout=None)\n"
- "--\n"
- "\n"
- "Acquire the semaphore/lock.");
- #define _MULTIPROCESSING_SEMLOCK_ACQUIRE_METHODDEF \
- {"acquire", _PyCFunction_CAST(_multiprocessing_SemLock_acquire), METH_FASTCALL|METH_KEYWORDS, _multiprocessing_SemLock_acquire__doc__},
- static PyObject *
- _multiprocessing_SemLock_acquire_impl(SemLockObject *self, int blocking,
- PyObject *timeout_obj);
- static PyObject *
- _multiprocessing_SemLock_acquire(SemLockObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- #define NUM_KEYWORDS 2
- static struct {
- PyGC_Head _this_is_not_used;
- PyObject_VAR_HEAD
- PyObject *ob_item[NUM_KEYWORDS];
- } _kwtuple = {
- .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(block), &_Py_ID(timeout), },
- };
- #undef NUM_KEYWORDS
- #define KWTUPLE (&_kwtuple.ob_base.ob_base)
- #else // !Py_BUILD_CORE
- # define KWTUPLE NULL
- #endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"block", "timeout", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "acquire",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[2];
- Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
- int blocking = 1;
- PyObject *timeout_obj = Py_None;
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- if (!noptargs) {
- goto skip_optional_pos;
- }
- if (args[0]) {
- blocking = PyObject_IsTrue(args[0]);
- if (blocking < 0) {
- goto exit;
- }
- if (!--noptargs) {
- goto skip_optional_pos;
- }
- }
- timeout_obj = args[1];
- skip_optional_pos:
- return_value = _multiprocessing_SemLock_acquire_impl(self, blocking, timeout_obj);
- exit:
- return return_value;
- }
- #endif /* defined(HAVE_MP_SEMAPHORE) && !defined(MS_WINDOWS) */
- #if defined(HAVE_MP_SEMAPHORE) && !defined(MS_WINDOWS)
- PyDoc_STRVAR(_multiprocessing_SemLock_release__doc__,
- "release($self, /)\n"
- "--\n"
- "\n"
- "Release the semaphore/lock.");
- #define _MULTIPROCESSING_SEMLOCK_RELEASE_METHODDEF \
- {"release", (PyCFunction)_multiprocessing_SemLock_release, METH_NOARGS, _multiprocessing_SemLock_release__doc__},
- static PyObject *
- _multiprocessing_SemLock_release_impl(SemLockObject *self);
- static PyObject *
- _multiprocessing_SemLock_release(SemLockObject *self, PyObject *Py_UNUSED(ignored))
- {
- return _multiprocessing_SemLock_release_impl(self);
- }
- #endif /* defined(HAVE_MP_SEMAPHORE) && !defined(MS_WINDOWS) */
- #if defined(HAVE_MP_SEMAPHORE)
- static PyObject *
- _multiprocessing_SemLock_impl(PyTypeObject *type, int kind, int value,
- int maxvalue, const char *name, int unlink);
- static PyObject *
- _multiprocessing_SemLock(PyTypeObject *type, PyObject *args, PyObject *kwargs)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- #define NUM_KEYWORDS 5
- static struct {
- PyGC_Head _this_is_not_used;
- PyObject_VAR_HEAD
- PyObject *ob_item[NUM_KEYWORDS];
- } _kwtuple = {
- .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(kind), &_Py_ID(value), &_Py_ID(maxvalue), &_Py_ID(name), &_Py_ID(unlink), },
- };
- #undef NUM_KEYWORDS
- #define KWTUPLE (&_kwtuple.ob_base.ob_base)
- #else // !Py_BUILD_CORE
- # define KWTUPLE NULL
- #endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"kind", "value", "maxvalue", "name", "unlink", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "SemLock",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[5];
- PyObject * const *fastargs;
- Py_ssize_t nargs = PyTuple_GET_SIZE(args);
- int kind;
- int value;
- int maxvalue;
- const char *name;
- int unlink;
- fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 5, 5, 0, argsbuf);
- if (!fastargs) {
- goto exit;
- }
- kind = _PyLong_AsInt(fastargs[0]);
- if (kind == -1 && PyErr_Occurred()) {
- goto exit;
- }
- value = _PyLong_AsInt(fastargs[1]);
- if (value == -1 && PyErr_Occurred()) {
- goto exit;
- }
- maxvalue = _PyLong_AsInt(fastargs[2]);
- if (maxvalue == -1 && PyErr_Occurred()) {
- goto exit;
- }
- if (!PyUnicode_Check(fastargs[3])) {
- _PyArg_BadArgument("SemLock", "argument 'name'", "str", fastargs[3]);
- goto exit;
- }
- Py_ssize_t name_length;
- name = PyUnicode_AsUTF8AndSize(fastargs[3], &name_length);
- if (name == NULL) {
- goto exit;
- }
- if (strlen(name) != (size_t)name_length) {
- PyErr_SetString(PyExc_ValueError, "embedded null character");
- goto exit;
- }
- unlink = PyObject_IsTrue(fastargs[4]);
- if (unlink < 0) {
- goto exit;
- }
- return_value = _multiprocessing_SemLock_impl(type, kind, value, maxvalue, name, unlink);
- exit:
- return return_value;
- }
- #endif /* defined(HAVE_MP_SEMAPHORE) */
- #if defined(HAVE_MP_SEMAPHORE)
- PyDoc_STRVAR(_multiprocessing_SemLock__rebuild__doc__,
- "_rebuild($type, handle, kind, maxvalue, name, /)\n"
- "--\n"
- "\n");
- #define _MULTIPROCESSING_SEMLOCK__REBUILD_METHODDEF \
- {"_rebuild", _PyCFunction_CAST(_multiprocessing_SemLock__rebuild), METH_FASTCALL|METH_CLASS, _multiprocessing_SemLock__rebuild__doc__},
- static PyObject *
- _multiprocessing_SemLock__rebuild_impl(PyTypeObject *type, SEM_HANDLE handle,
- int kind, int maxvalue,
- const char *name);
- static PyObject *
- _multiprocessing_SemLock__rebuild(PyTypeObject *type, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- SEM_HANDLE handle;
- int kind;
- int maxvalue;
- const char *name;
- if (!_PyArg_ParseStack(args, nargs, ""F_SEM_HANDLE"iiz:_rebuild",
- &handle, &kind, &maxvalue, &name)) {
- goto exit;
- }
- return_value = _multiprocessing_SemLock__rebuild_impl(type, handle, kind, maxvalue, name);
- exit:
- return return_value;
- }
- #endif /* defined(HAVE_MP_SEMAPHORE) */
- #if defined(HAVE_MP_SEMAPHORE)
- PyDoc_STRVAR(_multiprocessing_SemLock__count__doc__,
- "_count($self, /)\n"
- "--\n"
- "\n"
- "Num of `acquire()`s minus num of `release()`s for this process.");
- #define _MULTIPROCESSING_SEMLOCK__COUNT_METHODDEF \
- {"_count", (PyCFunction)_multiprocessing_SemLock__count, METH_NOARGS, _multiprocessing_SemLock__count__doc__},
- static PyObject *
- _multiprocessing_SemLock__count_impl(SemLockObject *self);
- static PyObject *
- _multiprocessing_SemLock__count(SemLockObject *self, PyObject *Py_UNUSED(ignored))
- {
- return _multiprocessing_SemLock__count_impl(self);
- }
- #endif /* defined(HAVE_MP_SEMAPHORE) */
- #if defined(HAVE_MP_SEMAPHORE)
- PyDoc_STRVAR(_multiprocessing_SemLock__is_mine__doc__,
- "_is_mine($self, /)\n"
- "--\n"
- "\n"
- "Whether the lock is owned by this thread.");
- #define _MULTIPROCESSING_SEMLOCK__IS_MINE_METHODDEF \
- {"_is_mine", (PyCFunction)_multiprocessing_SemLock__is_mine, METH_NOARGS, _multiprocessing_SemLock__is_mine__doc__},
- static PyObject *
- _multiprocessing_SemLock__is_mine_impl(SemLockObject *self);
- static PyObject *
- _multiprocessing_SemLock__is_mine(SemLockObject *self, PyObject *Py_UNUSED(ignored))
- {
- return _multiprocessing_SemLock__is_mine_impl(self);
- }
- #endif /* defined(HAVE_MP_SEMAPHORE) */
- #if defined(HAVE_MP_SEMAPHORE)
- PyDoc_STRVAR(_multiprocessing_SemLock__get_value__doc__,
- "_get_value($self, /)\n"
- "--\n"
- "\n"
- "Get the value of the semaphore.");
- #define _MULTIPROCESSING_SEMLOCK__GET_VALUE_METHODDEF \
- {"_get_value", (PyCFunction)_multiprocessing_SemLock__get_value, METH_NOARGS, _multiprocessing_SemLock__get_value__doc__},
- static PyObject *
- _multiprocessing_SemLock__get_value_impl(SemLockObject *self);
- static PyObject *
- _multiprocessing_SemLock__get_value(SemLockObject *self, PyObject *Py_UNUSED(ignored))
- {
- return _multiprocessing_SemLock__get_value_impl(self);
- }
- #endif /* defined(HAVE_MP_SEMAPHORE) */
- #if defined(HAVE_MP_SEMAPHORE)
- PyDoc_STRVAR(_multiprocessing_SemLock__is_zero__doc__,
- "_is_zero($self, /)\n"
- "--\n"
- "\n"
- "Return whether semaphore has value zero.");
- #define _MULTIPROCESSING_SEMLOCK__IS_ZERO_METHODDEF \
- {"_is_zero", (PyCFunction)_multiprocessing_SemLock__is_zero, METH_NOARGS, _multiprocessing_SemLock__is_zero__doc__},
- static PyObject *
- _multiprocessing_SemLock__is_zero_impl(SemLockObject *self);
- static PyObject *
- _multiprocessing_SemLock__is_zero(SemLockObject *self, PyObject *Py_UNUSED(ignored))
- {
- return _multiprocessing_SemLock__is_zero_impl(self);
- }
- #endif /* defined(HAVE_MP_SEMAPHORE) */
- #if defined(HAVE_MP_SEMAPHORE)
- PyDoc_STRVAR(_multiprocessing_SemLock__after_fork__doc__,
- "_after_fork($self, /)\n"
- "--\n"
- "\n"
- "Rezero the net acquisition count after fork().");
- #define _MULTIPROCESSING_SEMLOCK__AFTER_FORK_METHODDEF \
- {"_after_fork", (PyCFunction)_multiprocessing_SemLock__after_fork, METH_NOARGS, _multiprocessing_SemLock__after_fork__doc__},
- static PyObject *
- _multiprocessing_SemLock__after_fork_impl(SemLockObject *self);
- static PyObject *
- _multiprocessing_SemLock__after_fork(SemLockObject *self, PyObject *Py_UNUSED(ignored))
- {
- return _multiprocessing_SemLock__after_fork_impl(self);
- }
- #endif /* defined(HAVE_MP_SEMAPHORE) */
- #if defined(HAVE_MP_SEMAPHORE)
- PyDoc_STRVAR(_multiprocessing_SemLock___enter____doc__,
- "__enter__($self, /)\n"
- "--\n"
- "\n"
- "Enter the semaphore/lock.");
- #define _MULTIPROCESSING_SEMLOCK___ENTER___METHODDEF \
- {"__enter__", (PyCFunction)_multiprocessing_SemLock___enter__, METH_NOARGS, _multiprocessing_SemLock___enter____doc__},
- static PyObject *
- _multiprocessing_SemLock___enter___impl(SemLockObject *self);
- static PyObject *
- _multiprocessing_SemLock___enter__(SemLockObject *self, PyObject *Py_UNUSED(ignored))
- {
- return _multiprocessing_SemLock___enter___impl(self);
- }
- #endif /* defined(HAVE_MP_SEMAPHORE) */
- #if defined(HAVE_MP_SEMAPHORE)
- PyDoc_STRVAR(_multiprocessing_SemLock___exit____doc__,
- "__exit__($self, exc_type=None, exc_value=None, exc_tb=None, /)\n"
- "--\n"
- "\n"
- "Exit the semaphore/lock.");
- #define _MULTIPROCESSING_SEMLOCK___EXIT___METHODDEF \
- {"__exit__", _PyCFunction_CAST(_multiprocessing_SemLock___exit__), METH_FASTCALL, _multiprocessing_SemLock___exit____doc__},
- static PyObject *
- _multiprocessing_SemLock___exit___impl(SemLockObject *self,
- PyObject *exc_type,
- PyObject *exc_value, PyObject *exc_tb);
- static PyObject *
- _multiprocessing_SemLock___exit__(SemLockObject *self, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- PyObject *exc_type = Py_None;
- PyObject *exc_value = Py_None;
- PyObject *exc_tb = Py_None;
- if (!_PyArg_CheckPositional("__exit__", nargs, 0, 3)) {
- goto exit;
- }
- if (nargs < 1) {
- goto skip_optional;
- }
- exc_type = args[0];
- if (nargs < 2) {
- goto skip_optional;
- }
- exc_value = args[1];
- if (nargs < 3) {
- goto skip_optional;
- }
- exc_tb = args[2];
- skip_optional:
- return_value = _multiprocessing_SemLock___exit___impl(self, exc_type, exc_value, exc_tb);
- exit:
- return return_value;
- }
- #endif /* defined(HAVE_MP_SEMAPHORE) */
- #ifndef _MULTIPROCESSING_SEMLOCK_ACQUIRE_METHODDEF
- #define _MULTIPROCESSING_SEMLOCK_ACQUIRE_METHODDEF
- #endif /* !defined(_MULTIPROCESSING_SEMLOCK_ACQUIRE_METHODDEF) */
- #ifndef _MULTIPROCESSING_SEMLOCK_RELEASE_METHODDEF
- #define _MULTIPROCESSING_SEMLOCK_RELEASE_METHODDEF
- #endif /* !defined(_MULTIPROCESSING_SEMLOCK_RELEASE_METHODDEF) */
- #ifndef _MULTIPROCESSING_SEMLOCK__REBUILD_METHODDEF
- #define _MULTIPROCESSING_SEMLOCK__REBUILD_METHODDEF
- #endif /* !defined(_MULTIPROCESSING_SEMLOCK__REBUILD_METHODDEF) */
- #ifndef _MULTIPROCESSING_SEMLOCK__COUNT_METHODDEF
- #define _MULTIPROCESSING_SEMLOCK__COUNT_METHODDEF
- #endif /* !defined(_MULTIPROCESSING_SEMLOCK__COUNT_METHODDEF) */
- #ifndef _MULTIPROCESSING_SEMLOCK__IS_MINE_METHODDEF
- #define _MULTIPROCESSING_SEMLOCK__IS_MINE_METHODDEF
- #endif /* !defined(_MULTIPROCESSING_SEMLOCK__IS_MINE_METHODDEF) */
- #ifndef _MULTIPROCESSING_SEMLOCK__GET_VALUE_METHODDEF
- #define _MULTIPROCESSING_SEMLOCK__GET_VALUE_METHODDEF
- #endif /* !defined(_MULTIPROCESSING_SEMLOCK__GET_VALUE_METHODDEF) */
- #ifndef _MULTIPROCESSING_SEMLOCK__IS_ZERO_METHODDEF
- #define _MULTIPROCESSING_SEMLOCK__IS_ZERO_METHODDEF
- #endif /* !defined(_MULTIPROCESSING_SEMLOCK__IS_ZERO_METHODDEF) */
- #ifndef _MULTIPROCESSING_SEMLOCK__AFTER_FORK_METHODDEF
- #define _MULTIPROCESSING_SEMLOCK__AFTER_FORK_METHODDEF
- #endif /* !defined(_MULTIPROCESSING_SEMLOCK__AFTER_FORK_METHODDEF) */
- #ifndef _MULTIPROCESSING_SEMLOCK___ENTER___METHODDEF
- #define _MULTIPROCESSING_SEMLOCK___ENTER___METHODDEF
- #endif /* !defined(_MULTIPROCESSING_SEMLOCK___ENTER___METHODDEF) */
- #ifndef _MULTIPROCESSING_SEMLOCK___EXIT___METHODDEF
- #define _MULTIPROCESSING_SEMLOCK___EXIT___METHODDEF
- #endif /* !defined(_MULTIPROCESSING_SEMLOCK___EXIT___METHODDEF) */
- /*[clinic end generated code: output=dae57a702cc01512 input=a9049054013a1b77]*/
|