Commit ced7181b authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont Committed by Christophe Mutricy

CPU: fprintf is not safe inside a signal handler...

...and VLC does not quite work on Linux 2.2 anymore.
Signed-off-by: default avatarChristophe Mutricy <xtophe@videolan.org>
parent 02f44d74
...@@ -51,8 +51,15 @@ static void SigHandler ( int ); ...@@ -51,8 +51,15 @@ static void SigHandler ( int );
*****************************************************************************/ *****************************************************************************/
static jmp_buf env; static jmp_buf env;
static int i_illegal; static int i_illegal;
#if defined( __i386__ ) || defined( __x86_64__ ) #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 #endif
/***************************************************************************** /*****************************************************************************
...@@ -180,7 +187,6 @@ uint32_t CPUCapabilities( void ) ...@@ -180,7 +187,6 @@ uint32_t CPUCapabilities( void )
# ifdef CAN_COMPILE_SSE # ifdef CAN_COMPILE_SSE
/* We test if OS supports the SSE instructions */ /* We test if OS supports the SSE instructions */
psz_capability = "SSE";
i_illegal = 0; i_illegal = 0;
if( setjmp( env ) == 0 ) if( setjmp( env ) == 0 )
...@@ -190,9 +196,9 @@ uint32_t CPUCapabilities( void ) ...@@ -190,9 +196,9 @@ uint32_t CPUCapabilities( void )
} }
if( i_illegal == 0 ) if( i_illegal == 0 )
{
i_capabilities |= CPU_CAPABILITY_SSE; i_capabilities |= CPU_CAPABILITY_SSE;
} else
warn_cap( "SSE" );
# endif # endif
} }
...@@ -200,7 +206,6 @@ uint32_t CPUCapabilities( void ) ...@@ -200,7 +206,6 @@ uint32_t CPUCapabilities( void )
{ {
# if defined(CAN_COMPILE_SSE) # if defined(CAN_COMPILE_SSE)
/* We test if OS supports the SSE instructions */ /* We test if OS supports the SSE instructions */
psz_capability = "SSE2";
i_illegal = 0; i_illegal = 0;
if( setjmp( env ) == 0 ) if( setjmp( env ) == 0 )
...@@ -210,9 +215,9 @@ uint32_t CPUCapabilities( void ) ...@@ -210,9 +215,9 @@ uint32_t CPUCapabilities( void )
} }
if( i_illegal == 0 ) if( i_illegal == 0 )
{
i_capabilities |= CPU_CAPABILITY_SSE2; i_capabilities |= CPU_CAPABILITY_SSE2;
} else
warn_cap( "SSE2" );
# endif # endif
} }
...@@ -233,7 +238,6 @@ uint32_t CPUCapabilities( void ) ...@@ -233,7 +238,6 @@ uint32_t CPUCapabilities( void )
# ifdef CAN_COMPILE_3DNOW # ifdef CAN_COMPILE_3DNOW
if( i_edx & 0x80000000 ) if( i_edx & 0x80000000 )
{ {
psz_capability = "3D Now!";
i_illegal = 0; i_illegal = 0;
if( setjmp( env ) == 0 ) if( setjmp( env ) == 0 )
...@@ -243,9 +247,9 @@ uint32_t CPUCapabilities( void ) ...@@ -243,9 +247,9 @@ uint32_t CPUCapabilities( void )
} }
if( i_illegal == 0 ) if( i_illegal == 0 )
{
i_capabilities |= CPU_CAPABILITY_3DNOW; i_capabilities |= CPU_CAPABILITY_3DNOW;
} else
warn_cap( "3D Now!" );
} }
# endif # endif
...@@ -326,17 +330,6 @@ static void SigHandler( int i_signal ) ...@@ -326,17 +330,6 @@ static void SigHandler( int i_signal )
#else #else
VLC_UNUSED( i_signal ); VLC_UNUSED( i_signal );
#endif #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 ); longjmp( env, 1 );
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment