fixes from work: use ICC bswap intrinsics instead of fallbacks; update UNUSED2 to work with ICC; update mahaf for Win7
This was SVN commit r8553.
This commit is contained in:
parent
9c53fda749
commit
6b4d5091b3
@ -127,15 +127,16 @@ LIB_API i64 movsx_le64(const u8* p, size_t size);
|
||||
LIB_API i64 movsx_be64(const u8* p, size_t size);
|
||||
|
||||
|
||||
#if MSC_VERSION
|
||||
#if ICC_VERSION
|
||||
#define swap32 _bswap
|
||||
#define swap64 _bswap64
|
||||
#elif MSC_VERSION
|
||||
extern unsigned short _byteswap_ushort(unsigned short);
|
||||
extern unsigned long _byteswap_ulong(unsigned long);
|
||||
extern unsigned __int64 _byteswap_uint64(unsigned __int64);
|
||||
# if !ICC_VERSION // ICC doesn't need (and warns about) the pragmas
|
||||
# pragma intrinsic(_byteswap_ushort)
|
||||
# pragma intrinsic(_byteswap_ulong)
|
||||
# pragma intrinsic(_byteswap_uint64)
|
||||
# endif
|
||||
#pragma intrinsic(_byteswap_ushort)
|
||||
#pragma intrinsic(_byteswap_ulong)
|
||||
#pragma intrinsic(_byteswap_uint64)
|
||||
# define swap16 _byteswap_ushort
|
||||
# define swap32 _byteswap_ulong
|
||||
# define swap64 _byteswap_uint64
|
||||
|
@ -27,12 +27,20 @@
|
||||
#ifndef INCLUDED_CODE_ANNOTATION
|
||||
#define INCLUDED_CODE_ANNOTATION
|
||||
|
||||
#include "lib/sysdep/compiler.h"
|
||||
|
||||
/**
|
||||
* mark a function local variable or parameter as unused and avoid
|
||||
* the corresponding compiler warning.
|
||||
* use inside the function body, e.g. void f(int x) { UNUSED2(x); }
|
||||
**/
|
||||
#define UNUSED2(param) (void)param;
|
||||
#if ICC_VERSION
|
||||
// NB: #pragma unused is documented but "unrecognized" when used;
|
||||
// casting to void isn't sufficient, but the following is:
|
||||
# define UNUSED2(param) param = param
|
||||
#else
|
||||
# define UNUSED2(param) (void)param
|
||||
#endif
|
||||
|
||||
/**
|
||||
* mark a function parameter as unused and avoid
|
||||
|
@ -218,7 +218,7 @@ static SC_HANDLE OpenServiceControlManager()
|
||||
// Least-Permission accounts to use it, but is too invasive and
|
||||
// thus out of the question.
|
||||
|
||||
// make sure the error is as expected, otherwise something is afoot.
|
||||
// rule out other problems
|
||||
debug_assert(GetLastError() == ERROR_ACCESS_DENIED);
|
||||
|
||||
return 0;
|
||||
@ -286,9 +286,10 @@ static void StartDriver(const fs::wpath& driverPathname)
|
||||
if(!hService)
|
||||
{
|
||||
LPCWSTR startName = 0; // LocalSystem
|
||||
// NB: Windows 7 seems to insist upon backslashes (i.e. external_file_string)
|
||||
hService = CreateServiceW(hSCM, AKEN_NAME, AKEN_NAME,
|
||||
SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL,
|
||||
driverPathname.string().c_str(), 0, 0, 0, startName, 0);
|
||||
driverPathname.external_file_string().c_str(), 0, 0, 0, startName, 0);
|
||||
debug_assert(hService != 0);
|
||||
}
|
||||
|
||||
@ -302,7 +303,7 @@ static void StartDriver(const fs::wpath& driverPathname)
|
||||
{
|
||||
// starting failed. don't raise a warning because this
|
||||
// always happens on least-permission user accounts.
|
||||
//WARN_IF_FALSE(0);
|
||||
//debug_assert(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -340,7 +341,7 @@ static fs::wpath DriverPathname()
|
||||
static LibError Init()
|
||||
{
|
||||
if(wutil_HasCommandLineArgument(L"-wNoMahaf"))
|
||||
return ERR::NOT_SUPPORTED;
|
||||
return ERR::NOT_SUPPORTED; // NOWARN
|
||||
|
||||
{
|
||||
const fs::wpath driverPathname = DriverPathname();
|
||||
@ -351,7 +352,7 @@ static LibError Init()
|
||||
const DWORD shareMode = 0;
|
||||
hAken = CreateFileW(L"\\\\.\\Aken", GENERIC_READ, shareMode, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
|
||||
if(hAken == INVALID_HANDLE_VALUE)
|
||||
return ERR::INVALID_HANDLE;
|
||||
return ERR::INVALID_HANDLE; // NOWARN (happens often due to security restrictions)
|
||||
}
|
||||
|
||||
return INFO::OK;
|
||||
@ -365,6 +366,7 @@ static void Shutdown()
|
||||
UninstallDriver();
|
||||
}
|
||||
|
||||
|
||||
static ModuleInitState initState;
|
||||
|
||||
LibError mahaf_Init()
|
||||
|
Loading…
Reference in New Issue
Block a user