[vlc-devel] commit: CPU: fprintf is not safe inside a signal handler... ( Rémi Denis-Courmont )
git version control
git at videolan.org
Fri Aug 21 20:59:19 CEST 2009
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Fri Aug 21 21:58:28 2009 +0300| [0b4e5d22926f6cc90ffe032a19bd6fe9fedef3f6] | committer: Rémi Denis-Courmont
CPU: fprintf is not safe inside a signal handler...
...and VLC does not quite work on Linux 2.2 anymore.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=0b4e5d22926f6cc90ffe032a19bd6fe9fedef3f6
---
src/misc/cpu.c | 35 ++++++++++++++---------------------
1 files changed, 14 insertions(+), 21 deletions(-)
diff --git a/src/misc/cpu.c b/src/misc/cpu.c
index afa0cdb..b5d0e47 100644
--- a/src/misc/cpu.c
+++ b/src/misc/cpu.c
@@ -51,8 +51,15 @@ static void SigHandler ( int );
*****************************************************************************/
static jmp_buf env;
static int i_illegal;
+
#if defined( __i386__ ) || defined( __x86_64__ )
-static const char *psz_capability;
+static void warn_cap( const char *psz_capability )
+{
+ fprintf( stderr, "warning: your CPU has %s instructions, but not your "
+ "operating system.\n", psz_capability );
+ fprintf( stderr, " some optimizations will be disabled unless "
+ "you upgrade your OS\n" );
+}
#endif
/*****************************************************************************
@@ -152,7 +159,6 @@ uint32_t CPUCapabilities( void )
# ifdef CAN_COMPILE_SSE
/* We test if OS supports the SSE instructions */
- psz_capability = "SSE";
i_illegal = 0;
if( setjmp( env ) == 0 )
@@ -162,9 +168,9 @@ uint32_t CPUCapabilities( void )
}
if( i_illegal == 0 )
- {
i_capabilities |= CPU_CAPABILITY_SSE;
- }
+ else
+ warn_cap( "SSE" );
# endif
}
@@ -172,7 +178,6 @@ uint32_t CPUCapabilities( void )
{
# if defined(CAN_COMPILE_SSE)
/* We test if OS supports the SSE instructions */
- psz_capability = "SSE2";
i_illegal = 0;
if( setjmp( env ) == 0 )
@@ -182,9 +187,9 @@ uint32_t CPUCapabilities( void )
}
if( i_illegal == 0 )
- {
i_capabilities |= CPU_CAPABILITY_SSE2;
- }
+ else
+ warn_cap( "SSE2" );
# endif
}
@@ -200,7 +205,6 @@ uint32_t CPUCapabilities( void )
# ifdef CAN_COMPILE_3DNOW
if( i_edx & 0x80000000 )
{
- psz_capability = "3D Now!";
i_illegal = 0;
if( setjmp( env ) == 0 )
@@ -210,9 +214,9 @@ uint32_t CPUCapabilities( void )
}
if( i_illegal == 0 )
- {
i_capabilities |= CPU_CAPABILITY_3DNOW;
- }
+ else
+ warn_cap( "3D Now!" );
}
# endif
@@ -291,17 +295,6 @@ static void SigHandler( int i_signal )
#else
VLC_UNUSED( i_signal );
#endif
-
-#if defined( __i386__ )
- fprintf( stderr, "warning: your CPU has %s instructions, but not your "
- "operating system.\n", psz_capability );
- fprintf( stderr, " some optimizations will be disabled unless "
- "you upgrade your OS\n" );
-# if defined( __linux__ )
- fprintf( stderr, " (for instance Linux kernel 2.4.x or later)\n" );
-# endif
-#endif
-
longjmp( env, 1 );
}
More information about the vlc-devel
mailing list