From d28e953222b9cb9b6b17c97e59ab9075626aba19 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 13 Jan 2025 17:15:44 -0800 Subject: [PATCH] Added thread safety documentation for SDL_iostream.h Fixes https://github.com/libsdl-org/SDL/issues/11942 --- include/SDL3/SDL_iostream.h | 96 +++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/include/SDL3/SDL_iostream.h b/include/SDL3/SDL_iostream.h index ca2bf275ba..a38225b758 100644 --- a/include/SDL3/SDL_iostream.h +++ b/include/SDL3/SDL_iostream.h @@ -262,6 +262,8 @@ typedef struct SDL_IOStream SDL_IOStream; * * \since This function is available since SDL 3.1.3. * + * \threadsafety This function is not thread safe. + * * \sa SDL_CloseIO * \sa SDL_FlushIO * \sa SDL_ReadIO @@ -305,6 +307,8 @@ extern SDL_DECLSPEC SDL_IOStream * SDLCALL SDL_IOFromFile(const char *file, cons * * \since This function is available since SDL 3.1.3. * + * \threadsafety It is safe to call this function from any thread. + * * \sa SDL_IOFromConstMem * \sa SDL_CloseIO * \sa SDL_FlushIO @@ -349,6 +353,8 @@ extern SDL_DECLSPEC SDL_IOStream * SDLCALL SDL_IOFromMem(void *mem, size_t size) * * \since This function is available since SDL 3.1.3. * + * \threadsafety It is safe to call this function from any thread. + * * \sa SDL_IOFromMem * \sa SDL_CloseIO * \sa SDL_ReadIO @@ -377,6 +383,8 @@ extern SDL_DECLSPEC SDL_IOStream * SDLCALL SDL_IOFromConstMem(const void *mem, s * * \since This function is available since SDL 3.1.3. * + * \threadsafety It is safe to call this function from any thread. + * * \sa SDL_CloseIO * \sa SDL_ReadIO * \sa SDL_SeekIO @@ -410,6 +418,8 @@ extern SDL_DECLSPEC SDL_IOStream * SDLCALL SDL_IOFromDynamicMem(void); * * \since This function is available since SDL 3.1.3. * + * \threadsafety It is safe to call this function from any thread. + * * \sa SDL_CloseIO * \sa SDL_INIT_INTERFACE * \sa SDL_IOFromConstMem @@ -444,6 +454,8 @@ extern SDL_DECLSPEC SDL_IOStream * SDLCALL SDL_OpenIO(const SDL_IOStreamInterfac * * \since This function is available since SDL 3.1.3. * + * \threadsafety This function is not thread safe. + * * \sa SDL_OpenIO */ extern SDL_DECLSPEC bool SDLCALL SDL_CloseIO(SDL_IOStream *context); @@ -456,6 +468,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_CloseIO(SDL_IOStream *context); * SDL_GetError() for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC SDL_PropertiesID SDLCALL SDL_GetIOProperties(SDL_IOStream *context); @@ -477,6 +491,8 @@ extern SDL_DECLSPEC SDL_PropertiesID SDLCALL SDL_GetIOProperties(SDL_IOStream *c * another thread is operating on the same SDL_IOStream. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC SDL_IOStatus SDLCALL SDL_GetIOStatus(SDL_IOStream *context); @@ -489,6 +505,8 @@ extern SDL_DECLSPEC SDL_IOStatus SDLCALL SDL_GetIOStatus(SDL_IOStream *context); * information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC Sint64 SDLCALL SDL_GetIOSize(SDL_IOStream *context); @@ -515,6 +533,8 @@ extern SDL_DECLSPEC Sint64 SDLCALL SDL_GetIOSize(SDL_IOStream *context); * * \since This function is available since SDL 3.1.3. * + * \threadsafety This function is not thread safe. + * * \sa SDL_TellIO */ extern SDL_DECLSPEC Sint64 SDLCALL SDL_SeekIO(SDL_IOStream *context, Sint64 offset, SDL_IOWhence whence); @@ -533,6 +553,8 @@ extern SDL_DECLSPEC Sint64 SDLCALL SDL_SeekIO(SDL_IOStream *context, Sint64 offs * * \since This function is available since SDL 3.1.3. * + * \threadsafety This function is not thread safe. + * * \sa SDL_SeekIO */ extern SDL_DECLSPEC Sint64 SDLCALL SDL_TellIO(SDL_IOStream *context); @@ -556,6 +578,8 @@ extern SDL_DECLSPEC Sint64 SDLCALL SDL_TellIO(SDL_IOStream *context); * * \since This function is available since SDL 3.1.3. * + * \threadsafety This function is not thread safe. + * * \sa SDL_WriteIO * \sa SDL_GetIOStatus */ @@ -583,6 +607,8 @@ extern SDL_DECLSPEC size_t SDLCALL SDL_ReadIO(SDL_IOStream *context, void *ptr, * * \since This function is available since SDL 3.1.3. * + * \threadsafety This function is not thread safe. + * * \sa SDL_IOprintf * \sa SDL_ReadIO * \sa SDL_SeekIO @@ -605,6 +631,8 @@ extern SDL_DECLSPEC size_t SDLCALL SDL_WriteIO(SDL_IOStream *context, const void * * \since This function is available since SDL 3.1.3. * + * \threadsafety This function is not thread safe. + * * \sa SDL_IOvprintf * \sa SDL_WriteIO */ @@ -623,6 +651,8 @@ extern SDL_DECLSPEC size_t SDLCALL SDL_IOprintf(SDL_IOStream *context, SDL_PRINT * * \since This function is available since SDL 3.1.3. * + * \threadsafety This function is not thread safe. + * * \sa SDL_IOprintf * \sa SDL_WriteIO */ @@ -641,6 +671,8 @@ extern SDL_DECLSPEC size_t SDLCALL SDL_IOvprintf(SDL_IOStream *context, SDL_PRIN * * \since This function is available since SDL 3.1.3. * + * \threadsafety This function is not thread safe. + * * \sa SDL_OpenIO * \sa SDL_WriteIO */ @@ -665,6 +697,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_FlushIO(SDL_IOStream *context); * * \since This function is available since SDL 3.1.3. * + * \threadsafety This function is not thread safe. + * * \sa SDL_LoadFile * \sa SDL_SaveFile_IO */ @@ -686,6 +720,8 @@ extern SDL_DECLSPEC void * SDLCALL SDL_LoadFile_IO(SDL_IOStream *src, size_t *da * * \since This function is available since SDL 3.1.3. * + * \threadsafety This function is not thread safe. + * * \sa SDL_LoadFile_IO * \sa SDL_SaveFile */ @@ -705,6 +741,8 @@ extern SDL_DECLSPEC void * SDLCALL SDL_LoadFile(const char *file, size_t *datasi * * \since This function is available since SDL 3.1.8. * + * \threadsafety This function is not thread safe. + * * \sa SDL_SaveFile * \sa SDL_LoadFile_IO */ @@ -722,6 +760,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_SaveFile_IO(SDL_IOStream *src, const void * * * \since This function is available since SDL 3.1.8. * + * \threadsafety This function is not thread safe. + * * \sa SDL_SaveFile_IO * \sa SDL_LoadFile */ @@ -748,6 +788,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_SaveFile(const char *file, const void *data * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_ReadU8(SDL_IOStream *src, Uint8 *value); @@ -765,6 +807,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_ReadU8(SDL_IOStream *src, Uint8 *value); * information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_ReadS8(SDL_IOStream *src, Sint8 *value); @@ -786,6 +830,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_ReadS8(SDL_IOStream *src, Sint8 *value); * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_ReadU16LE(SDL_IOStream *src, Uint16 *value); @@ -807,6 +853,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_ReadU16LE(SDL_IOStream *src, Uint16 *value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_ReadS16LE(SDL_IOStream *src, Sint16 *value); @@ -828,6 +876,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_ReadS16LE(SDL_IOStream *src, Sint16 *value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_ReadU16BE(SDL_IOStream *src, Uint16 *value); @@ -849,6 +899,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_ReadU16BE(SDL_IOStream *src, Uint16 *value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_ReadS16BE(SDL_IOStream *src, Sint16 *value); @@ -870,6 +922,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_ReadS16BE(SDL_IOStream *src, Sint16 *value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_ReadU32LE(SDL_IOStream *src, Uint32 *value); @@ -891,6 +945,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_ReadU32LE(SDL_IOStream *src, Uint32 *value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_ReadS32LE(SDL_IOStream *src, Sint32 *value); @@ -912,6 +968,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_ReadS32LE(SDL_IOStream *src, Sint32 *value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_ReadU32BE(SDL_IOStream *src, Uint32 *value); @@ -933,6 +991,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_ReadU32BE(SDL_IOStream *src, Uint32 *value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_ReadS32BE(SDL_IOStream *src, Sint32 *value); @@ -954,6 +1014,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_ReadS32BE(SDL_IOStream *src, Sint32 *value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_ReadU64LE(SDL_IOStream *src, Uint64 *value); @@ -975,6 +1037,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_ReadU64LE(SDL_IOStream *src, Uint64 *value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_ReadS64LE(SDL_IOStream *src, Sint64 *value); @@ -996,6 +1060,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_ReadS64LE(SDL_IOStream *src, Sint64 *value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_ReadU64BE(SDL_IOStream *src, Uint64 *value); @@ -1017,6 +1083,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_ReadU64BE(SDL_IOStream *src, Uint64 *value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_ReadS64BE(SDL_IOStream *src, Sint64 *value); /* @} *//* Read endian functions */ @@ -1037,6 +1105,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_ReadS64BE(SDL_IOStream *src, Sint64 *value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_WriteU8(SDL_IOStream *dst, Uint8 value); @@ -1049,6 +1119,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_WriteU8(SDL_IOStream *dst, Uint8 value); * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_WriteS8(SDL_IOStream *dst, Sint8 value); @@ -1066,6 +1138,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_WriteS8(SDL_IOStream *dst, Sint8 value); * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_WriteU16LE(SDL_IOStream *dst, Uint16 value); @@ -1083,6 +1157,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_WriteU16LE(SDL_IOStream *dst, Uint16 value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_WriteS16LE(SDL_IOStream *dst, Sint16 value); @@ -1099,6 +1175,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_WriteS16LE(SDL_IOStream *dst, Sint16 value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_WriteU16BE(SDL_IOStream *dst, Uint16 value); @@ -1115,6 +1193,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_WriteU16BE(SDL_IOStream *dst, Uint16 value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_WriteS16BE(SDL_IOStream *dst, Sint16 value); @@ -1132,6 +1212,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_WriteS16BE(SDL_IOStream *dst, Sint16 value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_WriteU32LE(SDL_IOStream *dst, Uint32 value); @@ -1149,6 +1231,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_WriteU32LE(SDL_IOStream *dst, Uint32 value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_WriteS32LE(SDL_IOStream *dst, Sint32 value); @@ -1165,6 +1249,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_WriteS32LE(SDL_IOStream *dst, Sint32 value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_WriteU32BE(SDL_IOStream *dst, Uint32 value); @@ -1181,6 +1267,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_WriteU32BE(SDL_IOStream *dst, Uint32 value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_WriteS32BE(SDL_IOStream *dst, Sint32 value); @@ -1198,6 +1286,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_WriteS32BE(SDL_IOStream *dst, Sint32 value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_WriteU64LE(SDL_IOStream *dst, Uint64 value); @@ -1215,6 +1305,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_WriteU64LE(SDL_IOStream *dst, Uint64 value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_WriteS64LE(SDL_IOStream *dst, Sint64 value); @@ -1231,6 +1323,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_WriteS64LE(SDL_IOStream *dst, Sint64 value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_WriteU64BE(SDL_IOStream *dst, Uint64 value); @@ -1247,6 +1341,8 @@ extern SDL_DECLSPEC bool SDLCALL SDL_WriteU64BE(SDL_IOStream *dst, Uint64 value) * for more information. * * \since This function is available since SDL 3.1.3. + * + * \threadsafety This function is not thread safe. */ extern SDL_DECLSPEC bool SDLCALL SDL_WriteS64BE(SDL_IOStream *dst, Sint64 value);