Use struct __sFILE instead of FILE in thread locking callback
authorguenther <guenther@openbsd.org>
Sun, 18 Aug 2024 02:25:51 +0000 (02:25 +0000)
committerguenther <guenther@openbsd.org>
Sun, 18 Aug 2024 02:25:51 +0000 (02:25 +0000)
declarations to reduce <stdio.h> pollution.  Declare __isthreaded
in thread_private.h where it's really needed.

ok deraadt@

lib/libc/include/thread_private.h
lib/libc/thread/rthread_cb.h

index 237c3fb..1ec1071 100644 (file)
@@ -1,11 +1,11 @@
-/* $OpenBSD: thread_private.h,v 1.36 2021/01/06 19:54:17 otto Exp $ */
+/* $OpenBSD: thread_private.h,v 1.37 2024/08/18 02:25:51 guenther Exp $ */
 
 /* PUBLIC DOMAIN: No Rights Reserved. Marco S Hyman <marc@snafu.org> */
 
 #ifndef _THREAD_PRIVATE_H_
 #define _THREAD_PRIVATE_H_
 
-#include <stdio.h>             /* for FILE and __isthreaded */
+extern int __isthreaded;
 
 #define _MALLOC_MUTEXES 32
 void _malloc_init(int);
@@ -77,14 +77,15 @@ PROTO_NORMAL(_malloc_init);
  *     Returns the address of the thread's TCB.
  */
 
+struct __sFILE;
 struct pthread;
 struct thread_callbacks {
        int     *(*tc_errnoptr)(void);          /* MUST BE FIRST */
        void    *(*tc_tcb)(void);
        __dead void     (*tc_canceled)(void);
-       void    (*tc_flockfile)(FILE *);
-       int     (*tc_ftrylockfile)(FILE *);
-       void    (*tc_funlockfile)(FILE *);
+       void    (*tc_flockfile)(struct __sFILE *);
+       int     (*tc_ftrylockfile)(struct __sFILE *);
+       void    (*tc_funlockfile)(struct __sFILE *);
        void    (*tc_malloc_lock)(int);
        void    (*tc_malloc_unlock)(int);
        void    (*tc_atexit_lock)(void);
index d82c8b6..abf02f7 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: rthread_cb.h,v 1.3 2021/01/06 19:54:17 otto Exp $ */
+/*     $OpenBSD: rthread_cb.h,v 1.4 2024/08/18 02:25:51 guenther Exp $ */
 /*
  * Copyright (c) 2016 Philip Guenther <guenther@openbsd.org>
  * All Rights Reserved.
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#include <stdio.h>
+struct __sFILE;
 
 __BEGIN_HIDDEN_DECLS
-void   _thread_flockfile(FILE *);
-int    _thread_ftrylockfile(FILE *);
-void   _thread_funlockfile(FILE *);
+void   _thread_flockfile(struct __sFILE *);
+int    _thread_ftrylockfile(struct __sFILE *);
+void   _thread_funlockfile(struct __sFILE *);
 void   _thread_malloc_lock(int);
 void   _thread_malloc_unlock(int);
 void   _thread_atexit_lock(void);