You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.2 KiB
55 lines
1.2 KiB
/*++
|
|
|
|
Copyright (c) 2001 Microsoft Corporation
|
|
All rights reserved
|
|
|
|
Module Name:
|
|
|
|
algndjmp.h
|
|
|
|
Abstract:
|
|
|
|
This file wraps around setjmp/longjmp functions to fix up alignment
|
|
problems created by UFL memory management.
|
|
|
|
Author:
|
|
|
|
Larry Zhu (LZhu) 11-Apr-2001 Created
|
|
|
|
Environment:
|
|
|
|
User Mode -Win32
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
#ifndef _ALGNDJMP_H_
|
|
#define _ALGNDJMP_H_
|
|
|
|
#include <setjmp.h>
|
|
|
|
#define IN
|
|
#define OUT
|
|
|
|
#ifndef _M_IX86
|
|
|
|
void
|
|
PS_CopyJmpBuf(
|
|
IN int iSetjmpRetVal,
|
|
OUT jmp_buf envDest,
|
|
IN jmp_buf envSrc
|
|
);
|
|
|
|
#define DEFINE_ALIGN_SETJMP_VAR jmp_buf PS_AlignedJmpBuf; int iSetjmpRetVal
|
|
#define SETJMP(x) (iSetjmpRetVal = setjmp(PS_AlignedJmpBuf), (void)PS_CopyJmpBuf(iSetjmpRetVal, (x), PS_AlignedJmpBuf), iSetjmpRetVal)
|
|
#define LONGJMP(x,y) do { (void)memcpy(PS_AlignedJmpBuf, (x), sizeof(jmp_buf)); (void)longjmp(PS_AlignedJmpBuf, (y)); } while (0)
|
|
|
|
#else
|
|
|
|
#define DEFINE_ALIGN_SETJMP_VAR
|
|
#define SETJMP(x) setjmp(x)
|
|
#define LONGJMP(x,y) longjmp((x), (y))
|
|
|
|
#endif
|
|
|
|
#endif // #ifndef _ALGNDJMP_H_
|