Skip to content

Commit 84219b4

Browse files
committed
Use FT_MUTEX_LOCK/UNLOCK.
1 parent e8fd6b8 commit 84219b4

1 file changed

Lines changed: 13 additions & 20 deletions

File tree

Modules/posixmodule.c

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#include "pycore_object.h" // _PyObject_LookupSpecial()
2727
#include "pycore_pylifecycle.h" // _PyOS_URandom()
2828
#include "pycore_pystate.h" // _PyInterpreterState_GET()
29+
#include "pycore_pyatomic_ft_wrappers.h" // FT_MUTEX_LOCK()
2930
#include "pycore_signal.h" // Py_NSIG
3031
#include "pycore_time.h" // _PyLong_FromTime_t()
3132
#include "pycore_tuple.h" // _PyTuple_FromPairSteal
@@ -16841,32 +16842,24 @@ typedef struct {
1684116842

1684216843
#define ScandirIterator_CAST(op) ((ScandirIterator *)(op))
1684316844

16844-
#ifdef Py_GIL_DISABLED
16845-
# define SCANDIR_ITERATOR_LOCK(iterator) PyMutex_Lock(&(iterator)->mutex)
16846-
# define SCANDIR_ITERATOR_UNLOCK(iterator) PyMutex_Unlock(&(iterator)->mutex)
16847-
#else
16848-
# define SCANDIR_ITERATOR_LOCK(iterator) ((void)0)
16849-
# define SCANDIR_ITERATOR_UNLOCK(iterator) ((void)0)
16850-
#endif
16851-
1685216845
#ifdef MS_WINDOWS
1685316846

1685416847
static int
1685516848
ScandirIterator_is_closed(ScandirIterator *iterator)
1685616849
{
16857-
SCANDIR_ITERATOR_LOCK(iterator);
16850+
FT_MUTEX_LOCK(&iterator->mutex);
1685816851
int closed = iterator->handle == INVALID_HANDLE_VALUE;
16859-
SCANDIR_ITERATOR_UNLOCK(iterator);
16852+
FT_MUTEX_UNLOCK(&iterator->mutex);
1686016853
return closed;
1686116854
}
1686216855

1686316856
static void
1686416857
ScandirIterator_closedir(ScandirIterator *iterator)
1686516858
{
16866-
SCANDIR_ITERATOR_LOCK(iterator);
16859+
FT_MUTEX_LOCK(&iterator->mutex);
1686716860
HANDLE handle = iterator->handle;
1686816861
iterator->handle = INVALID_HANDLE_VALUE;
16869-
SCANDIR_ITERATOR_UNLOCK(iterator);
16862+
FT_MUTEX_UNLOCK(&iterator->mutex);
1687016863

1687116864
if (handle != INVALID_HANDLE_VALUE) {
1687216865
Py_BEGIN_ALLOW_THREADS
@@ -16884,7 +16877,7 @@ ScandirIterator_iternext(PyObject *op)
1688416877
DWORD error = ERROR_SUCCESS;
1688516878
int found = 0;
1688616879

16887-
SCANDIR_ITERATOR_LOCK(iterator);
16880+
FT_MUTEX_LOCK(&iterator->mutex);
1688816881
/* Happens if the iterator is iterated twice, or closed explicitly */
1688916882
while (iterator->handle != INVALID_HANDLE_VALUE) {
1689016883
if (!iterator->first_time) {
@@ -16911,7 +16904,7 @@ ScandirIterator_iternext(PyObject *op)
1691116904

1691216905
/* Loop till we get a non-dot directory or finish iterating */
1691316906
}
16914-
SCANDIR_ITERATOR_UNLOCK(iterator);
16907+
FT_MUTEX_UNLOCK(&iterator->mutex);
1691516908

1691616909
if (found) {
1691716910
PyObject *module = PyType_GetModule(Py_TYPE(iterator));
@@ -16935,19 +16928,19 @@ ScandirIterator_iternext(PyObject *op)
1693516928
static int
1693616929
ScandirIterator_is_closed(ScandirIterator *iterator)
1693716930
{
16938-
SCANDIR_ITERATOR_LOCK(iterator);
16931+
FT_MUTEX_LOCK(&iterator->mutex);
1693916932
int closed = iterator->dirp == NULL;
16940-
SCANDIR_ITERATOR_UNLOCK(iterator);
16933+
FT_MUTEX_UNLOCK(&iterator->mutex);
1694116934
return closed;
1694216935
}
1694316936

1694416937
static void
1694516938
ScandirIterator_closedir(ScandirIterator *iterator)
1694616939
{
16947-
SCANDIR_ITERATOR_LOCK(iterator);
16940+
FT_MUTEX_LOCK(&iterator->mutex);
1694816941
DIR *dirp = iterator->dirp;
1694916942
iterator->dirp = NULL;
16950-
SCANDIR_ITERATOR_UNLOCK(iterator);
16943+
FT_MUTEX_UNLOCK(&iterator->mutex);
1695116944

1695216945
if (dirp != NULL) {
1695316946
Py_BEGIN_ALLOW_THREADS
@@ -16977,7 +16970,7 @@ ScandirIterator_iternext(PyObject *op)
1697716970
unsigned char d_type = 0;
1697816971
#endif
1697916972

16980-
SCANDIR_ITERATOR_LOCK(iterator);
16973+
FT_MUTEX_LOCK(&iterator->mutex);
1698116974
/* Happens if the iterator is iterated twice, or closed explicitly */
1698216975
while (iterator->dirp != NULL) {
1698316976
Py_BEGIN_ALLOW_THREADS
@@ -17014,7 +17007,7 @@ ScandirIterator_iternext(PyObject *op)
1701417007

1701517008
/* Loop till we get a non-dot directory or finish iterating */
1701617009
}
17017-
SCANDIR_ITERATOR_UNLOCK(iterator);
17010+
FT_MUTEX_UNLOCK(&iterator->mutex);
1701817011

1701917012
if (found) {
1702017013
PyObject *module = PyType_GetModule(Py_TYPE(iterator));

0 commit comments

Comments
 (0)