[PATCH 3/5] xfree86: Convert some xf86BlockSIGIO to OsBlockSignals

Tiago Vignatti tiago.vignatti at nokia.com
Fri Dec 17 05:14:51 PST 2010


On Thu, Dec 16, 2010 at 03:31:38PM -0500, ext Adam Jackson wrote:
> The DDC1 and int10 code are blocking SIGIO to get some assurance that
> their usleep() calls take as long as they expect.  That's a good start
> but you really want to be blocking more than just SIGIO, SIGALRM too at
> minimum.
> 
> At this point, except for SIGIO handler setup itself, BlockSIGIO really
> means "block input events".
> 
> Signed-off-by: Adam Jackson <ajax at redhat.com>
> ---
>  hw/xfree86/ddc/ddc.c           |   11 ++++-------
>  hw/xfree86/int10/helper_exec.c |    5 +++--
>  2 files changed, 7 insertions(+), 9 deletions(-)
> 
> diff --git a/hw/xfree86/ddc/ddc.c b/hw/xfree86/ddc/ddc.c
> index 7c7dc9c..179f42c 100644
> --- a/hw/xfree86/ddc/ddc.c
> +++ b/hw/xfree86/ddc/ddc.c
> @@ -235,15 +235,12 @@ EDIDRead_DDC1(ScrnInfoPtr pScrn, DDC1SetSpeedProc DDCSpeed,
>   * @return NULL if no monitor attached or failure to interpret the EDID.
>   */
>  xf86MonPtr
> -xf86DoEDID_DDC1(
> -    int scrnIndex, DDC1SetSpeedProc DDC1SetSpeed, 
> -    unsigned int (*DDC1Read)(ScrnInfoPtr)
> -)
> +xf86DoEDID_DDC1(int scrnIndex, DDC1SetSpeedProc DDC1SetSpeed, 
> +		unsigned int (*DDC1Read)(ScrnInfoPtr))
>  {
>      ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
>      unsigned char *EDID_block = NULL;
>      xf86MonPtr tmp = NULL;
> -    int sigio;
>      /* Default DDC and DDC1 to enabled. */
>      Bool noddc = FALSE, noddc1 = FALSE;
>      OptionInfoPtr options;
> @@ -259,9 +256,9 @@ xf86DoEDID_DDC1(
>      if (noddc || noddc1)
>  	return NULL;
>      
> -    sigio = xf86BlockSIGIO();
> +    OsBlockSignals();
>      EDID_block = EDIDRead_DDC1(pScrn,DDC1SetSpeed,DDC1Read);
> -    xf86UnblockSIGIO(sigio);
> +    OsReleaseSignals();
>  
>      if (EDID_block){
>  	tmp = xf86InterpretEDID(scrnIndex,EDID_block);
> diff --git a/hw/xfree86/int10/helper_exec.c b/hw/xfree86/int10/helper_exec.c
> index 55ab058..b9af473 100644
> --- a/hw/xfree86/int10/helper_exec.c
> +++ b/hw/xfree86/int10/helper_exec.c
> @@ -75,13 +75,14 @@ setup_int(xf86Int10InfoPtr pInt)
>      if (pInt->Flags & SET_BIOS_SCRATCH)
>  	SetResetBIOSVars(pInt, TRUE);
>  #endif
> -    return xf86BlockSIGIO();
> +    OsBlockSignals();
> +    return 0;

humm, are we really fine with this return value? You could tweak
xf86ExecX86int10 at least also.

>  }
>  
>  void
>  finish_int(xf86Int10InfoPtr pInt, int sig)
>  {
> -    xf86UnblockSIGIO(sig);
> +    OsReleaseSignals();
>      pInt->ax = (CARD32) X86_EAX;
>      pInt->bx = (CARD32) X86_EBX;
>      pInt->cx = (CARD32) X86_ECX;

Reviewed-by: Tiago Vignatti <tiago.vignatti at nokia.com>

             Tiago


More information about the xorg-devel mailing list