[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