本文整理汇总了C++中VA_ARG函数的典型用法代码示例。如果您正苦于以下问题:C++ VA_ARG函数的具体用法?C++ VA_ARG怎么用?C++ VA_ARG使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了VA_ARG函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: switch
/**
* Execute a request.
*/
TInt CMockCellBroadcastMessHandler::ExtFuncL(TInt aInterfaceId, VA_LIST& aList)
{
switch (aInterfaceId)
{
case MLtsyDispatchCellBroadcastActivateBroadcastReceiveMessage::KLtsyDispatchCellBroadcastActivateBroadcastReceiveMessageApiId:
{
RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSetting
= VA_ARG_ENUM(aList, RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter);
TMockLtsyData1<RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter> data(filterSetting);
return iMockLtsyEngine.ExecuteCommandL(aInterfaceId, data);
}
case MLtsyDispatchCellBroadcastReceiveMessageCancel::KLtsyDispatchCellBroadcastReceiveMessageCancelApiId:
{
RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSetting
= VA_ARG_ENUM(aList, RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter);
TMockLtsyData1<RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter> data(filterSetting);
return iMockLtsyEngine.ExecuteCommandL(aInterfaceId, data);
}
case MLtsyDispatchCellBroadcastSetBroadcastFilterSetting::KLtsyDispatchCellBroadcastSetBroadcastFilterSettingApiId:
{
RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter filterSetting
= VA_ARG_ENUM(aList, RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter);
TMockLtsyData1<RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter> data(filterSetting);
return iMockLtsyEngine.ExecuteCommandL(aInterfaceId, data);
}
case MLtsyDispatchCellBroadcastStartSimCbTopicBrowsing::KLtsyDispatchCellBroadcastStartSimCbTopicBrowsingApiId:
{
TMockLtsyData0 data;
return iMockLtsyEngine.ExecuteCommandL(aInterfaceId, data);
}
case MLtsyDispatchCellBroadcastDeleteSimCbTopic::KLtsyDispatchCellBroadcastDeleteSimCbTopicApiId:
{
TUint index = VA_ARG(aList, TUint);
TBool deleteFlag = VA_ARG(aList, TBool);
TMockLtsyData2<TUint, TBool> data(index, deleteFlag);
return iMockLtsyEngine.ExecuteCommandL(aInterfaceId, data);
}
case KMockLtsyDispatchCellBroadcastGsmBroadcastNotifyMessageReceivedIndId:
case KMockLtsyDispatchCellBroadcastWcdmaBroadcastMessageReceivedIndId:
default:
{
_LIT(KTempPanic, "Here to remind coder to add code to deserialise data otherwise test passes even though CTSY sends down the incorrect data");
User::Panic(KTempPanic, KErrGeneral);
TMockLtsyData0 data;
return iMockLtsyEngine.ExecuteCommandL(aInterfaceId, data);
}
}
} // CMockCellBroadcastMessHandler::ExtFuncL
示例2: BootScriptWriteInformation
/**
Internal function to add INFORAMTION opcode node to the table
list.
@param Marker The variable argument list to get the opcode
and associated attributes.
@retval EFI_OUT_OF_RESOURCES Not enought resource to complete the operations.
@retval EFI_SUCCESS The opcode entry is added to the table
successfully.
**/
EFI_STATUS
BootScriptWriteInformation (
IN VA_LIST Marker
)
{
UINT32 InformationLength;
EFI_PHYSICAL_ADDRESS Information;
InformationLength = VA_ARG (Marker, UINT32);
Information = VA_ARG (Marker, EFI_PHYSICAL_ADDRESS);
return S3BootScriptSaveInformation (InformationLength, (VOID*)(UINTN)Information);
}
示例3: BootScriptWriteDispatch2
/**
Internal function to add Save jmp address according to DISPATCH_OPCODE2.
The "Context" parameter is not ignored.
@param Marker The variable argument list to get the opcode
and associated attributes.
@retval EFI_OUT_OF_RESOURCES Not enough resource to do operation.
@retval EFI_SUCCESS Opcode is added.
**/
EFI_STATUS
BootScriptWriteDispatch2 (
IN VA_LIST Marker
)
{
VOID *EntryPoint;
VOID *Context;
EntryPoint = (VOID*)(UINTN)VA_ARG (Marker, EFI_PHYSICAL_ADDRESS);
Context = (VOID*)(UINTN)VA_ARG (Marker, EFI_PHYSICAL_ADDRESS);
return S3BootScriptSaveDispatch2 (EntryPoint, Context);
}
示例4: BootScriptWriteIoReadWrite
/**
Internal function to add IO read/write opcode to the table.
@param Marker The variable argument list to get the opcode
and associated attributes.
@retval EFI_OUT_OF_RESOURCES Not enough resource to do operation.
@retval EFI_SUCCESS Opcode is added.
**/
EFI_STATUS
BootScriptWriteIoReadWrite (
IN VA_LIST Marker
)
{
S3_BOOT_SCRIPT_LIB_WIDTH Width;
UINT64 Address;
UINT8 *Data;
UINT8 *DataMask;
Width = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
Address = VA_ARG (Marker, UINT64);
Data = VA_ARG (Marker, UINT8 *);
DataMask = VA_ARG (Marker, UINT8 *);
return S3BootScriptSaveIoReadWrite (Width, Address, Data, DataMask);
}
示例5: BootScriptWriteMemWrite
/**
Internal function to add memory write opcode to the table.
@param Marker The variable argument list to get the opcode
and associated attributes.
@retval EFI_OUT_OF_RESOURCES Not enough resource to do operation.
@retval EFI_SUCCESS Opcode is added.
**/
EFI_STATUS
BootScriptWriteMemWrite (
IN VA_LIST Marker
)
{
S3_BOOT_SCRIPT_LIB_WIDTH Width;
UINT64 Address;
UINTN Count;
UINT8 *Buffer;
Width = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
Address = VA_ARG (Marker, UINT64);
Count = VA_ARG (Marker, UINTN);
Buffer = VA_ARG (Marker, UINT8 *);
return S3BootScriptSaveMemWrite (Width, Address, Count, Buffer);
}
示例6: ASSERT
/**
Prints a debug message to the debug output device if the specified error level is enabled.
If any bit in ErrorLevel is also set in PcdDebugPrintErrorLevel, then print
the message specified by Format and the associated variable argument list to
the debug output device.
If Format is NULL, then ASSERT().
@param ErrorLevel The error level of the debug message.
@param Format Format string for the debug message to print.
**/
VOID
EFIAPI
DebugPrint (
IN UINTN ErrorLevel,
IN CONST CHAR8 *Format,
...
)
{
UINT64 Buffer[EFI_STATUS_CODE_DATA_MAX_SIZE / sizeof (UINT64)];
EFI_DEBUG_INFO *DebugInfo;
UINTN TotalSize;
UINTN Index;
VA_LIST Marker;
UINT64 *ArgumentPointer;
//
// If Format is NULL, then ASSERT().
//
ASSERT (Format != NULL);
//
// Check driver Debug Level value and global debug level
//
if ((ErrorLevel & PcdGet32(PcdDebugPrintErrorLevel)) == 0) {
return;
}
TotalSize = sizeof (EFI_DEBUG_INFO) + 12 * sizeof (UINT64) + AsciiStrLen (Format) + 1;
if (TotalSize > EFI_STATUS_CODE_DATA_MAX_SIZE) {
return;
}
//
// Then EFI_DEBUG_INFO
//
DebugInfo = (EFI_DEBUG_INFO *)Buffer;
DebugInfo->ErrorLevel = (UINT32)ErrorLevel;
//
// 256 byte mini Var Arg stack. That is followed by the format string.
//
VA_START (Marker, Format);
for (Index = 0, ArgumentPointer = (UINT64 *)(DebugInfo + 1); Index < 12; Index++, ArgumentPointer++) {
WriteUnaligned64(ArgumentPointer, VA_ARG (Marker, UINT64));
}
VA_END (Marker);
AsciiStrCpy ((CHAR8 *)ArgumentPointer, Format);
REPORT_STATUS_CODE_EX (
EFI_DEBUG_CODE,
(EFI_SOFTWARE_DXE_BS_DRIVER | EFI_DC_UNSPECIFIED),
0,
NULL,
&gEfiStatusCodeDataTypeDebugGuid,
DebugInfo,
TotalSize
);
}
示例7: BootScriptMemPoll
/**
Internal function to add memory pool operation to the table.
@param Marker The variable argument list to get the opcode
and associated attributes.
@retval EFI_OUT_OF_RESOURCES Not enough resource to do operation.
@retval EFI_SUCCESS Opcode is added.
**/
EFI_STATUS
BootScriptMemPoll (
IN VA_LIST Marker
)
{
EFI_BOOT_SCRIPT_WIDTH Width;
UINT64 Address;
UINT8 *BitMask;
UINT8 *BitValue;
UINT64 Duration;
UINT64 LoopTimes;
UINT64 Delay;
Width = VA_ARG (Marker, EFI_BOOT_SCRIPT_WIDTH);
Address = VA_ARG (Marker, UINT64);
BitMask = VA_ARG (Marker, UINT8 *);
BitValue = VA_ARG (Marker, UINT8 *);
Duration = (UINT64)VA_ARG (Marker, UINT64);
LoopTimes = (UINT64)VA_ARG (Marker, UINT64);
//
// Framework version: Duration is used for Stall(), which is Microseconds.
// Total time is: Duration(Microseconds) * LoopTimes.
// PI version: Duration is always 100ns. Delay is LoopTimes.
// Total time is: 100ns * Delay.
// So Delay = Duration(Microseconds) * LoopTimes / 100ns
// = Duration * 1000ns * LoopTimes / 100ns
// = Duration * 10 * LoopTimes
//
Delay = MultU64x64 (MultU64x32 (Duration, 10), LoopTimes);
//
// Framework version: First BitMask, then BitValue
// PI version: First Data, then DataMask
// So we revert their order in function call
//
return mS3SaveState->Write (
mS3SaveState,
EFI_BOOT_SCRIPT_MEM_POLL_OPCODE,
Width,
Address,
BitValue,
BitMask,
Delay
);
}
示例8: BootScriptPciCfgWrite
EFI_STATUS
BootScriptPciCfgWrite (
IN EFI_SMM_SCRIPT_TABLE *ScriptTable,
IN VA_LIST Marker
)
{
BOOT_SCRIPT_POINTERS Script;
EFI_BOOT_SCRIPT_WIDTH Width;
UINT64 Address;
UINTN Count;
UINT8 *Buffer;
UINTN NodeLength;
UINT8 WidthInByte;
Width = VA_ARG(Marker, EFI_BOOT_SCRIPT_WIDTH);
Address = VA_ARG(Marker, UINT64);
Count = VA_ARG(Marker, UINTN);
Buffer = VA_ARG(Marker, UINT8*);
WidthInByte = (UINT8)(0x01 << (Width & 0x03));
Script.Raw = (UINT8*) ((UINTN)(*ScriptTable));
NodeLength = sizeof (EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE) + (WidthInByte * Count);
//
// Build script data
//
Script.PciWrite->OpCode = EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE_OPCODE;
Script.PciWrite->Length = (UINT8)(NodeLength);
Script.PciWrite->Width = Width;
Script.PciWrite->Address = Address;
Script.PciWrite->Count = (UINT32)Count;
SmmCopyMem (
(UINT8*)(Script.Raw + sizeof (EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE)),
Buffer,
WidthInByte * Count
);
//
// Update Script table pointer
//
*ScriptTable = *ScriptTable + NodeLength;
return EFI_SUCCESS;
}
示例9: BootScriptWriteIoPoll
/**
Internal function to add IO poll opcode node to the table
@param Marker The variable argument list to get the opcode
and associated attributes.
@retval EFI_OUT_OF_RESOURCES Not enought resource to complete the operations.
@retval EFI_SUCCESS The opcode entry is added to the table
successfully.
**/
EFI_STATUS
BootScriptWriteIoPoll (
IN VA_LIST Marker
)
{
S3_BOOT_SCRIPT_LIB_WIDTH Width;
UINT64 Address;
VOID *Data;
VOID *DataMask;
UINT64 Delay;
Width = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
Address = VA_ARG (Marker, UINT64);
Data = VA_ARG (Marker, VOID *);
DataMask = VA_ARG (Marker, VOID *);
Delay = (UINT64)VA_ARG (Marker, UINT64);
return S3BootScriptSaveIoPoll (Width, Address, Data, DataMask, Delay);
}
示例10: BootScriptWriteStall
/**
Internal function to add stall opcode to the table.
@param Marker The variable argument list to get the opcode
and associated attributes.
@retval EFI_OUT_OF_RESOURCES Not enough resource to do operation.
@retval EFI_SUCCESS Opcode is added.
**/
EFI_STATUS
BootScriptWriteStall (
IN VA_LIST Marker
)
{
UINT32 Duration;
Duration = VA_ARG (Marker, UINT32);
return S3BootScriptSaveStall (Duration);
}
示例11: BootScriptWriteMemPoll
/**
Internal function to add memory pool operation to the table.
@param Marker The variable argument list to get the opcode
and associated attributes.
@retval EFI_OUT_OF_RESOURCES Not enough resource to do operation.
@retval EFI_SUCCESS Opcode is added.
**/
EFI_STATUS
BootScriptWriteMemPoll (
IN VA_LIST Marker
)
{
S3_BOOT_SCRIPT_LIB_WIDTH Width;
UINT64 Address;
VOID *Data;
VOID *DataMask;
UINT64 Delay;
UINT64 LoopTimes;
UINT32 Remainder;
Width = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
Address = VA_ARG (Marker, UINT64);
Data = VA_ARG (Marker, VOID *);
DataMask = VA_ARG (Marker, VOID *);
Delay = VA_ARG (Marker, UINT64);
//
// According to the spec, the interval between 2 polls is 100ns,
// but the unit of Duration for S3BootScriptSaveMemPoll() is microsecond(1000ns).
// Duration * 1000ns * LoopTimes = Delay * 100ns
// Duration will be minimum 1(microsecond) to be minimum deviation,
// so LoopTimes = Delay / 10.
//
LoopTimes = DivU64x32Remainder (
Delay,
10,
&Remainder
);
if (Remainder != 0) {
//
// If Remainder is not zero, LoopTimes will be rounded up by 1.
//
LoopTimes +=1;
}
return S3BootScriptSaveMemPoll (Width, Address, DataMask, Data, 1, LoopTimes);
}
示例12: BootScriptWriteSmbusExecute
/**
Internal function to add smbus execute opcode to the table.
@param Marker The variable argument list to get the opcode
and associated attributes.
@retval EFI_OUT_OF_RESOURCES Not enough resource to do operation.
@retval EFI_SUCCESS Opcode is added.
**/
EFI_STATUS
BootScriptWriteSmbusExecute (
IN VA_LIST Marker
)
{
EFI_SMBUS_DEVICE_ADDRESS SlaveAddress;
EFI_SMBUS_DEVICE_COMMAND Command;
EFI_SMBUS_OPERATION Operation;
BOOLEAN PecCheck;
VOID *Buffer;
UINTN *DataSize;
UINTN SmBusAddress;
SlaveAddress.SmbusDeviceAddress = VA_ARG (Marker, UINTN);
Command = VA_ARG (Marker, EFI_SMBUS_DEVICE_COMMAND);
Operation = VA_ARG (Marker, EFI_SMBUS_OPERATION);
PecCheck = VA_ARG (Marker, BOOLEAN);
SmBusAddress = SMBUS_LIB_ADDRESS (SlaveAddress.SmbusDeviceAddress,Command,0,PecCheck);
DataSize = VA_ARG (Marker, UINTN *);
Buffer = VA_ARG (Marker, VOID *);
return S3BootScriptSaveSmbusExecute (SmBusAddress, Operation, DataSize, Buffer);
}
示例13: switch
/**
* Execute a request.
*/
TInt CMockCallControlMultipartyMessHandler::ExtFuncL(TInt aInterfaceId, VA_LIST& aList)
{
switch (aInterfaceId)
{
case MLtsyDispatchCallControlMultipartyConferenceHangUp::KLtsyDispatchCallControlMultipartyConferenceHangUpApiId:
{
RArray<TInt>& callIds = *VA_ARG(aList, RArray<TInt>* );
TMockLtsyData1<RArray<TInt> > data(callIds);
return iMockLtsyEngine.ExecuteCommandL(aInterfaceId, data);
}
case MLtsyDispatchCallControlMultipartyConferenceAddCall::KLtsyDispatchCallControlMultipartyConferenceAddCallApiId:
{
TInt callId = VA_ARG(aList, TInt);
TInt existingCallId = VA_ARG(aList, TInt);
TMockLtsyData2<TInt, TInt> data(callId, existingCallId);
return iMockLtsyEngine.ExecuteCommandL(aInterfaceId, data);
}
case MLtsyDispatchCallControlMultipartyCreateConference::KLtsyDispatchCallControlMultipartyCreateConferenceApiId:
{
TInt heldCallId = VA_ARG(aList, TInt);
TInt secondCallId = VA_ARG(aList, TInt);
TMockLtsyData2<TInt, TInt> data(heldCallId, secondCallId);
return iMockLtsyEngine.ExecuteCommandL(aInterfaceId, data);
}
case MLtsyDispatchCallControlMultipartyConferenceSwap::KLtsyDispatchCallControlMultipartyConferenceSwapApiId:
{
TInt heldCallId = VA_ARG(aList, TInt);
TInt connectedCallId = VA_ARG(aList, TInt);
TMockLtsyData2<TInt, TInt> data(heldCallId, connectedCallId);
return iMockLtsyEngine.ExecuteCommandL(aInterfaceId, data);
}
case MLtsyDispatchCallControlMultipartyConferenceGoOneToOne::KLtsyDispatchCallControlMultipartyConferenceGoOneToOneApiId:
{
TInt callId = VA_ARG(aList, TInt);
TMockLtsyData1<TInt> data(callId);
return iMockLtsyEngine.ExecuteCommandL(aInterfaceId, data);
}
default:
{
_LIT(KTempPanic, "Here to remind coder to add code to deserialise data otherwise test passes even though CTSY sends down the incorrect data");
User::Panic(KTempPanic, KErrGeneral);
TMockLtsyData0 data;
return iMockLtsyEngine.ExecuteCommandL(aInterfaceId, data);
}
}
} // CMockCallControlMultipartyMessHandler::ExtFuncL
示例14: entrypoint
/**
Internal function to add Save jmp address according to DISPATCH_OPCODE.
We ignore "Context" parameter.
We need create thunk stub to convert PEI entrypoint (used in Framework version)
to DXE entrypoint (defined in PI spec).
@param Marker The variable argument list to get the opcode
and associated attributes.
@retval EFI_OUT_OF_RESOURCES Not enough resource to do operation.
@retval EFI_SUCCESS Opcode is added.
**/
EFI_STATUS
FrameworkBootScriptDispatch (
IN VA_LIST Marker
)
{
VOID *EntryPoint;
VOID *Context;
EntryPoint = (VOID*)(UINTN)VA_ARG (Marker, EFI_PHYSICAL_ADDRESS);
//
// Register callback
//
Context = EntryPoint;
EntryPoint = (VOID *)(UINTN)FrameworkBootScriptDispatchStub;
return mS3SaveState->Write (
mS3SaveState,
EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE,
EntryPoint,
Context
);
}
示例15: EraseBlocks
/**
Erases and initializes a firmware volume block.
The EraseBlocks() function erases one or more blocks as denoted
by the variable argument list. The entire parameter list of
blocks must be verified before erasing any blocks. If a block is
requested that does not exist within the associated firmware
volume (it has a larger index than the last block of the
firmware volume), the EraseBlocks() function must return the
status code EFI_INVALID_PARAMETER without modifying the contents
of the firmware volume. Implementations should be mindful that
the firmware volume might be in the WriteDisabled state. If it
is in this state, the EraseBlocks() function must return the
status code EFI_ACCESS_DENIED without modifying the contents of
the firmware volume. All calls to EraseBlocks() must be fully
flushed to the hardware before the EraseBlocks() service
returns.
@param This Indicates the EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL
instance.
@param ... The variable argument list is a list of tuples.
Each tuple describes a range of LBAs to erase
and consists of the following:
- An EFI_LBA that indicates the starting LBA
- A UINTN that indicates the number of blocks to
erase
The list is terminated with an
EFI_LBA_LIST_TERMINATOR. For example, the
following indicates that two ranges of blocks
(5-7 and 10-11) are to be erased: EraseBlocks
(This, 5, 3, 10, 2, EFI_LBA_LIST_TERMINATOR);
@retval EFI_SUCCESS The erase request was successfully
completed.
@retval EFI_ACCESS_DENIED The firmware volume is in the
WriteDisabled state.
@retval EFI_DEVICE_ERROR The block device is not functioning
correctly and could not be written.
The firmware device may have been
partially erased.
@retval EFI_INVALID_PARAMETER One or more of the LBAs listed
in the variable argument list do
not exist in the firmware volume.
**/
EFI_STATUS
EFIAPI
FvbProtocolEraseBlocks (
IN CONST EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL *This,
...
)
{
EFI_FW_VOL_BLOCK_DEVICE *FvbDevice;
VA_LIST args;
EFI_LBA StartingLba;
UINTN NumOfLba;
UINT8 Erase;
VOID *ErasePtr;
UINTN EraseSize;
FvbDevice = FVB_DEVICE_FROM_THIS (This);
Erase = 0;
VA_START (args, This);
do {
StartingLba = VA_ARG (args, EFI_LBA);
if (StartingLba == EFI_LBA_LIST_TERMINATOR) {
break;
}
NumOfLba = VA_ARG (args, UINT32);
//
// Check input parameters
//
if ((NumOfLba == 0) || (StartingLba > 1) || ((StartingLba + NumOfLba) > 2)) {
VA_END (args);
return EFI_INVALID_PARAMETER;
}
if (StartingLba == 0) {
Erase = (UINT8) (Erase | BIT0);
}
if ((StartingLba + NumOfLba) == 2) {
Erase = (UINT8) (Erase | BIT1);
}
} while (1);
VA_END (args);
ErasePtr = (UINT8*) FvbDevice->BufferPtr;
EraseSize = 0;
if ((Erase & BIT0) != 0) {
EraseSize = EraseSize + FvbDevice->BlockSize;
//.........这里部分代码省略.........