Message ID | 20230818161427.3968-1-jamrial@gmail.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,v2] avutil/thread: add wrappers for pthread_cond_t and pthread_t functions | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
On Fri, Aug 18, 2023 at 01:14:27PM -0300, James Almer wrote: > Signed-off-by: James Almer <jamrial@gmail.com> > --- > Now not defining pthread_t when !HAVE_THREADS, like it's done with cond, mutex, > and once. > > libavutil/thread.h | 30 ++++++++++++++++++++++++++++++ > 1 file changed, 30 insertions(+) this seems not to build on ppc AVMutex use before definition make AR libavdevice/libavdevice.a CC libavfilter/dnn/dnn_backend_common.o In file included from src/libavfilter/dnn/dnn_backend_common.h:29:0, from src/libavfilter/dnn/dnn_backend_common.c:24: src/libavutil/thread.h:193:46: error: unknown type name ‘AVMutex’; did you mean ‘AVFilter’? static inline int ff_cond_wait(AVCond *cond, AVMutex *mutex){ return 0; } ^~~~~~~ AVFilter src/libavutil/thread.h:194:51: error: unknown type name ‘AVMutex’; did you mean ‘AVFilter’? static inline int ff_cond_timedwait(AVCond *cond, AVMutex *mutex, ^~~~~~~ AVFilter src/libavfilter/dnn/dnn_backend_common.c: In function ‘ff_dnn_async_module_cleanup’: src/libavfilter/dnn/dnn_backend_common.c:94:11: warning: unused variable ‘status’ [-Wunused-variable] void *status = 0; ^~~~~~ src/libavfilter/dnn/dnn_backend_common.c: In function ‘ff_dnn_start_inference_async’: src/libavfilter/dnn/dnn_backend_common.c:114:11: warning: unused variable ‘status’ [-Wunused-variable] void *status = 0; ^~~~~~ At top level: src/libavfilter/dnn/dnn_backend_common.c:80:14: warning: ‘async_thread_routine’ defined but not used [-Wunused-function] static void *async_thread_routine(void *args) ^~~~~~~~~~~~~~~~~~~~ src/ffbuild/common.mak:81: recipe for target 'libavfilter/dnn/dnn_backend_common.o' failed make: *** [libavfilter/dnn/dnn_backend_common.o] Error 1 [...]
On 8/18/2023 5:16 PM, Michael Niedermayer wrote: > On Fri, Aug 18, 2023 at 01:14:27PM -0300, James Almer wrote: >> Signed-off-by: James Almer <jamrial@gmail.com> >> --- >> Now not defining pthread_t when !HAVE_THREADS, like it's done with cond, mutex, >> and once. >> >> libavutil/thread.h | 30 ++++++++++++++++++++++++++++++ >> 1 file changed, 30 insertions(+) > > this seems not to build on ppc > AVMutex use before definition > > make > AR libavdevice/libavdevice.a > CC libavfilter/dnn/dnn_backend_common.o > In file included from src/libavfilter/dnn/dnn_backend_common.h:29:0, > from src/libavfilter/dnn/dnn_backend_common.c:24: > src/libavutil/thread.h:193:46: error: unknown type name ‘AVMutex’; did you mean ‘AVFilter’? > static inline int ff_cond_wait(AVCond *cond, AVMutex *mutex){ return 0; } > ^~~~~~~ > AVFilter > src/libavutil/thread.h:194:51: error: unknown type name ‘AVMutex’; did you mean ‘AVFilter’? > static inline int ff_cond_timedwait(AVCond *cond, AVMutex *mutex, > ^~~~~~~ > AVFilter > src/libavfilter/dnn/dnn_backend_common.c: In function ‘ff_dnn_async_module_cleanup’: > src/libavfilter/dnn/dnn_backend_common.c:94:11: warning: unused variable ‘status’ [-Wunused-variable] > void *status = 0; > ^~~~~~ > src/libavfilter/dnn/dnn_backend_common.c: In function ‘ff_dnn_start_inference_async’: > src/libavfilter/dnn/dnn_backend_common.c:114:11: warning: unused variable ‘status’ [-Wunused-variable] > void *status = 0; > ^~~~~~ > At top level: > src/libavfilter/dnn/dnn_backend_common.c:80:14: warning: ‘async_thread_routine’ defined but not used [-Wunused-function] > static void *async_thread_routine(void *args) > ^~~~~~~~~~~~~~~~~~~~ > src/ffbuild/common.mak:81: recipe for target 'libavfilter/dnn/dnn_backend_common.o' failed > make: *** [libavfilter/dnn/dnn_backend_common.o] Error 1 Should be fixed in v3.
diff --git a/libavutil/thread.h b/libavutil/thread.h index 2f5e7e1cb5..7dfa54c6a9 100644 --- a/libavutil/thread.h +++ b/libavutil/thread.h @@ -155,6 +155,15 @@ static inline int strict_pthread_once(pthread_once_t *once_control, void (*init_ #include "compat/w32pthreads.h" #endif +#define AVCond pthread_cond_t + +#define ff_cond_init pthread_cond_init +#define ff_cond_destroy pthread_cond_destroy +#define ff_cond_signal pthread_cond_signal +#define ff_cond_broadcast pthread_cond_broadcast +#define ff_cond_wait pthread_cond_wait +#define ff_cond_timedwait pthread_cond_timedwait + #define AVMutex pthread_mutex_t #define AV_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER @@ -168,8 +177,23 @@ static inline int strict_pthread_once(pthread_once_t *once_control, void (*init_ #define ff_thread_once(control, routine) pthread_once(control, routine) +#define AVThread pthread_t + +#define ff_thread_create pthread_create +#define ff_thread_join pthread_join + #else +#define AVCond char + +static inline int ff_cond_init(AVCond *cond, const void *attr){ return 0; } +static inline int ff_cond_destroy(AVCond *cond){ return 0; } +static inline int ff_cond_signal(AVCond *cond){ return 0; } +static inline int ff_cond_broadcast(AVCond *cond){ return 0; } +static inline int ff_cond_wait(AVCond *cond, AVMutex *mutex){ return 0; } +static inline int ff_cond_timedwait(AVCond *cond, AVMutex *mutex, + const void *abstime){ return 0; } + #define AVMutex char #define AV_MUTEX_INITIALIZER 0 @@ -190,6 +214,12 @@ static inline int ff_thread_once(char *control, void (*routine)(void)) return 0; } +#define AVThread char + +static inline int ff_thread_create(AVThread *thread, const void *unused_attr, + void *(*start_routine)(void*), void *arg){ return 0; } +static inline int ff_thread_join(AVThread thread, void **value_ptr){ return 0; } + #endif static inline int ff_thread_setname(const char *name)
Signed-off-by: James Almer <jamrial@gmail.com> --- Now not defining pthread_t when !HAVE_THREADS, like it's done with cond, mutex, and once. libavutil/thread.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+)