mirror of https://github.com/acidanthera/audk.git
1. add public functions header.
2. apply for doxgen format for file header. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5043 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
987da59835
commit
7b414b4ed6
|
@ -41,6 +41,7 @@ Abstract:
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
QueueDpc (
|
||||
IN EFI_TPL DpcTpl,
|
||||
IN EFI_DPC_PROCEDURE DpcProcedure,
|
||||
|
@ -58,6 +59,7 @@ QueueDpc (
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
DispatchDpc (
|
||||
VOID
|
||||
);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/** @file
|
||||
This library provides IpIo layer upon EFI IP4 Protocol.
|
||||
|
||||
Copyright (c) 2005 - 2007, Intel Corporation
|
||||
Copyright (c) 2005 - 2008, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
|
@ -9,13 +10,6 @@ http://opensource.org/licenses/bsd-license.php
|
|||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
Module Name:
|
||||
|
||||
IpIo.h
|
||||
|
||||
Abstract:
|
||||
|
||||
|
||||
**/
|
||||
|
||||
#ifndef _IP_IO_H_
|
||||
|
@ -176,29 +170,90 @@ typedef struct _IP_IO_IP_INFO {
|
|||
INTN RefCnt;
|
||||
} IP_IO_IP_INFO;
|
||||
|
||||
/**
|
||||
Create a new IP_IO instance.
|
||||
|
||||
@param Image The image handle of an IP_IO consumer protocol.
|
||||
@param Controller The controller handle of an IP_IO consumer protocol
|
||||
installed on.
|
||||
|
||||
@return Pointer to a newly created IP_IO instance.
|
||||
|
||||
**/
|
||||
IP_IO *
|
||||
EFIAPI
|
||||
IpIoCreate (
|
||||
IN EFI_HANDLE Image,
|
||||
IN EFI_HANDLE Controller
|
||||
);
|
||||
|
||||
/**
|
||||
Destroy an IP_IO instance.
|
||||
|
||||
@param IpIo Pointer to the IP_IO instance that needs to
|
||||
destroy.
|
||||
|
||||
@retval EFI_SUCCESS The IP_IO instance destroyed successfully.
|
||||
@retval other Error condition occurred.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
IpIoDestroy (
|
||||
IN IP_IO *IpIo
|
||||
);
|
||||
|
||||
/**
|
||||
Stop an IP_IO instance.
|
||||
|
||||
@param IpIo Pointer to the IP_IO instance that needs to stop.
|
||||
|
||||
@retval EFI_SUCCESS The IP_IO instance stopped successfully.
|
||||
@retval other Error condition occurred.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
IpIoStop (
|
||||
IN IP_IO *IpIo
|
||||
);
|
||||
|
||||
/**
|
||||
Open an IP_IO instance for use.
|
||||
|
||||
@param IpIo Pointer to an IP_IO instance that needs to open.
|
||||
@param OpenData The configuration data for the IP_IO instance.
|
||||
|
||||
@retval EFI_SUCCESS The IP_IO instance opened with OpenData
|
||||
successfully.
|
||||
@retval other Error condition occurred.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
IpIoOpen (
|
||||
IN IP_IO *IpIo,
|
||||
IN IP_IO_OPEN_DATA *OpenData
|
||||
);
|
||||
|
||||
/**
|
||||
Send out an IP packet.
|
||||
|
||||
@param IpIo Pointer to an IP_IO instance used for sending IP
|
||||
packet.
|
||||
@param Pkt Pointer to the IP packet to be sent.
|
||||
@param Sender The IP protocol instance used for sending.
|
||||
@param NotifyData
|
||||
@param Dest The destination IP address to send this packet to.
|
||||
@param OverrideData The data to override some configuration of the IP
|
||||
instance used for sending.
|
||||
|
||||
@retval EFI_SUCCESS The operation is completed successfully.
|
||||
@retval EFI_NOT_STARTED The IpIo is not configured.
|
||||
@retval EFI_OUT_OF_RESOURCES Failed due to resource limit.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
IpIoSend (
|
||||
IN IP_IO *IpIo,
|
||||
IN NET_BUF *Pkt,
|
||||
|
@ -209,36 +264,109 @@ IpIoSend (
|
|||
IN IP_IO_OVERRIDE *OverrideData
|
||||
);
|
||||
|
||||
/**
|
||||
Add a new IP instance for sending data.
|
||||
|
||||
@param IpIo Pointer to a IP_IO instance to add a new IP
|
||||
instance for sending purpose.
|
||||
|
||||
@return Pointer to the created IP_IO_IP_INFO structure, NULL is failed.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
IpIoCancelTxToken (
|
||||
IN IP_IO *IpIo,
|
||||
IN VOID *Packet
|
||||
);
|
||||
|
||||
/**
|
||||
Add a new IP instance for sending data.
|
||||
|
||||
@param IpIo Pointer to a IP_IO instance to add a new IP
|
||||
instance for sending purpose.
|
||||
|
||||
@return Pointer to the created IP_IO_IP_INFO structure, NULL is failed.
|
||||
|
||||
**/
|
||||
IP_IO_IP_INFO *
|
||||
EFIAPI
|
||||
IpIoAddIp (
|
||||
IN IP_IO *IpIo
|
||||
);
|
||||
|
||||
/**
|
||||
Configure the IP instance of this IpInfo and start the receiving if Ip4ConfigData
|
||||
is not NULL.
|
||||
|
||||
@param IpInfo Pointer to the IP_IO_IP_INFO instance.
|
||||
@param Ip4ConfigData The IP4 configure data used to configure the ip
|
||||
instance, if NULL the ip instance is reseted. If
|
||||
UseDefaultAddress is set to TRUE, and the configure
|
||||
operation succeeds, the default address information
|
||||
is written back in this Ip4ConfigData.
|
||||
|
||||
@retval EFI_STATUS The status returned by IP4->Configure or
|
||||
IP4->Receive.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
IpIoConfigIp (
|
||||
IN IP_IO_IP_INFO *IpInfo,
|
||||
IN OUT EFI_IP4_CONFIG_DATA *Ip4ConfigData OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Destroy an IP instance maintained in IpIo->IpList for
|
||||
sending purpose.
|
||||
|
||||
@param IpIo Pointer to the IP_IO instance.
|
||||
@param IpInfo Pointer to the IpInfo to be removed.
|
||||
|
||||
@return None.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
IpIoRemoveIp (
|
||||
IN IP_IO *IpIo,
|
||||
IN IP_IO_IP_INFO *IpInfo
|
||||
);
|
||||
|
||||
/**
|
||||
Find the first IP protocol maintained in IpIo whose local
|
||||
address is the same with Src.
|
||||
|
||||
@param IpIo Pointer to the pointer of the IP_IO instance.
|
||||
@param Src The local IP address.
|
||||
|
||||
@return Pointer to the IP protocol can be used for sending purpose and its local
|
||||
@return address is the same with Src.
|
||||
|
||||
**/
|
||||
IP_IO_IP_INFO *
|
||||
EFIAPI
|
||||
IpIoFindSender (
|
||||
IN OUT IP_IO **IpIo,
|
||||
IN IP4_ADDR Src
|
||||
);
|
||||
|
||||
/**
|
||||
Get the ICMP error map information, the ErrorStatus will be returned.
|
||||
The IsHard and Notify are optional. If they are not NULL, this rouine will
|
||||
fill them.
|
||||
We move IcmpErrMap[] to local variable to enable EBC build.
|
||||
|
||||
@param IcmpError IcmpError Type
|
||||
@param IsHard Whether it is a hard error
|
||||
@param Notify Whether it need to notify SockError
|
||||
|
||||
@return ICMP Error Status
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
IpIoGetIcmpErrStatus (
|
||||
IN ICMP_ERROR IcmpError,
|
||||
OUT BOOLEAN *IsHard, OPTIONAL
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/** @file
|
||||
This library provides basic functiosn for UEFI network stack.
|
||||
|
||||
Copyright (c) 2005 - 2007, Intel Corporation
|
||||
Copyright (c) 2005 - 2008, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
|
@ -9,15 +10,6 @@ http://opensource.org/licenses/bsd-license.php
|
|||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
Module Name:
|
||||
|
||||
NetLib.h
|
||||
|
||||
Abstract:
|
||||
|
||||
Library for the UEFI network stack.
|
||||
|
||||
|
||||
**/
|
||||
|
||||
#ifndef _NET_LIB_H_
|
||||
|
@ -174,16 +166,49 @@ typedef struct {
|
|||
#define EFI_NTOHL(EfiIp) (NTOHL (EFI_IP4 ((EfiIp))))
|
||||
#define EFI_IP4_EQUAL(Ip1, Ip2) (CompareMem ((Ip1), (Ip2), sizeof (EFI_IPv4_ADDRESS)) == 0)
|
||||
|
||||
/**
|
||||
Return the length of the mask. If the mask is invalid,
|
||||
return the invalid length 33, which is IP4_MASK_NUM.
|
||||
NetMask is in the host byte order.
|
||||
|
||||
@param NetMask The netmask to get the length from
|
||||
|
||||
@return The length of the netmask, IP4_MASK_NUM if the mask isn't
|
||||
@return supported.
|
||||
|
||||
**/
|
||||
INTN
|
||||
EFIAPI
|
||||
NetGetMaskLength (
|
||||
IN IP4_ADDR Mask
|
||||
);
|
||||
|
||||
/**
|
||||
Return the class of the address, such as class a, b, c.
|
||||
Addr is in host byte order.
|
||||
|
||||
@param Addr The address to get the class from
|
||||
|
||||
@return IP address class, such as IP4_ADDR_CLASSA
|
||||
|
||||
**/
|
||||
INTN
|
||||
EFIAPI
|
||||
NetGetIpClass (
|
||||
IN IP4_ADDR Addr
|
||||
);
|
||||
|
||||
/**
|
||||
Check whether the IP is a valid unicast address according to
|
||||
the netmask. If NetMask is zero, use the IP address's class to
|
||||
get the default mask.
|
||||
|
||||
@param Ip The IP to check againist
|
||||
@param NetMask The mask of the IP
|
||||
|
||||
@return TRUE if IP is a valid unicast address on the network, otherwise FALSE
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
Ip4IsUnicast (
|
||||
IN IP4_ADDR Ip,
|
||||
|
@ -205,19 +230,48 @@ extern EFI_IPv4_ADDRESS mZeroIp4Addr;
|
|||
|
||||
#define NET_RANDOM(Seed) ((UINT32) ((UINT32) (Seed) * 1103515245UL + 12345) % 4294967295UL)
|
||||
|
||||
|
||||
/**
|
||||
Extract a UINT32 from a byte stream, then convert it to host
|
||||
byte order. Use this function to avoid alignment error.
|
||||
|
||||
@param Buf The buffer to extract the UINT32.
|
||||
|
||||
@return The UINT32 extracted.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
NetGetUint32 (
|
||||
IN UINT8 *Buf
|
||||
);
|
||||
|
||||
/**
|
||||
Put a UINT32 to the byte stream. Convert it from host byte order
|
||||
to network byte order before putting.
|
||||
|
||||
@param Buf The buffer to put the UINT32
|
||||
@param Data The data to put
|
||||
|
||||
@return None
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetPutUint32 (
|
||||
IN UINT8 *Buf,
|
||||
IN UINT32 Data
|
||||
);
|
||||
|
||||
/**
|
||||
Initialize a random seed using current time.
|
||||
|
||||
None
|
||||
|
||||
@return The random seed initialized with current time.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
NetRandomInitSeed (
|
||||
VOID
|
||||
);
|
||||
|
@ -257,23 +311,61 @@ NetRandomInitSeed (
|
|||
NET_LIST_USER_STRUCT((ListHead)->BackLink, Type, Field)
|
||||
|
||||
|
||||
/**
|
||||
Remove the first entry on the list
|
||||
|
||||
@param Head The list header
|
||||
|
||||
@return The entry that is removed from the list, NULL if the list is empty.
|
||||
|
||||
**/
|
||||
LIST_ENTRY *
|
||||
EFIAPI
|
||||
NetListRemoveHead (
|
||||
LIST_ENTRY *Head
|
||||
);
|
||||
|
||||
/**
|
||||
Remove the last entry on the list
|
||||
|
||||
@param Head The list head
|
||||
|
||||
@return The entry that is removed from the list, NULL if the list is empty.
|
||||
|
||||
**/
|
||||
LIST_ENTRY *
|
||||
EFIAPI
|
||||
NetListRemoveTail (
|
||||
LIST_ENTRY *Head
|
||||
);
|
||||
|
||||
/**
|
||||
Insert the NewEntry after the PrevEntry
|
||||
|
||||
@param PrevEntry The previous entry to insert after
|
||||
@param NewEntry The new entry to insert
|
||||
|
||||
@return None
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetListInsertAfter (
|
||||
IN LIST_ENTRY *PrevEntry,
|
||||
IN LIST_ENTRY *NewEntry
|
||||
);
|
||||
|
||||
/**
|
||||
Insert the NewEntry before the PostEntry
|
||||
|
||||
@param PostEntry The entry to insert before
|
||||
@param NewEntry The new entry to insert
|
||||
|
||||
@return None
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetListInsertBefore (
|
||||
IN LIST_ENTRY *PostEntry,
|
||||
IN LIST_ENTRY *NewEntry
|
||||
|
@ -298,60 +390,161 @@ typedef struct {
|
|||
|
||||
#define NET_MAP_INCREAMENT 64
|
||||
|
||||
/**
|
||||
Initialize the netmap. Netmap is a reposity to keep the <Key, Value> pairs.
|
||||
|
||||
@param Map The netmap to initialize
|
||||
|
||||
@return None
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetMapInit (
|
||||
IN NET_MAP *Map
|
||||
);
|
||||
|
||||
/**
|
||||
To clean up the netmap, that is, release allocated memories.
|
||||
|
||||
@param Map The netmap to clean up.
|
||||
|
||||
@return None
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetMapClean (
|
||||
IN NET_MAP *Map
|
||||
);
|
||||
|
||||
/**
|
||||
Test whether the netmap is empty
|
||||
|
||||
@param Map The net map to test
|
||||
|
||||
@return TRUE if the netmap is empty, otherwise FALSE.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
NetMapIsEmpty (
|
||||
IN NET_MAP *Map
|
||||
);
|
||||
|
||||
/**
|
||||
Return the number of the <Key, Value> pairs in the netmap.
|
||||
|
||||
@param Map The netmap to get the entry number
|
||||
|
||||
@return The entry number in the netmap.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
NetMapGetCount (
|
||||
IN NET_MAP *Map
|
||||
);
|
||||
|
||||
/**
|
||||
Allocate an item to save the <Key, Value> pair to the head of the netmap.
|
||||
|
||||
@param Map The netmap to insert into
|
||||
@param Key The user's key
|
||||
@param Value The user's value for the key
|
||||
|
||||
@retval EFI_OUT_OF_RESOURCES Failed to allocate the memory for the item
|
||||
@retval EFI_SUCCESS The item is inserted to the head
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetMapInsertHead (
|
||||
IN NET_MAP *Map,
|
||||
IN VOID *Key,
|
||||
IN VOID *Value OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Allocate an item to save the <Key, Value> pair to the tail of the netmap.
|
||||
|
||||
@param Map The netmap to insert into
|
||||
@param Key The user's key
|
||||
@param Value The user's value for the key
|
||||
|
||||
@retval EFI_OUT_OF_RESOURCES Failed to allocate the memory for the item
|
||||
@retval EFI_SUCCESS The item is inserted to the tail
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetMapInsertTail (
|
||||
IN NET_MAP *Map,
|
||||
IN VOID *Key,
|
||||
IN VOID *Value OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Find the key in the netmap
|
||||
|
||||
@param Map The netmap to search within
|
||||
@param Key The key to search
|
||||
|
||||
@return The point to the item contains the Key, or NULL if Key isn't in the map.
|
||||
|
||||
**/
|
||||
NET_MAP_ITEM *
|
||||
EFIAPI
|
||||
NetMapFindKey (
|
||||
IN NET_MAP *Map,
|
||||
IN VOID *Key
|
||||
);
|
||||
|
||||
/**
|
||||
Remove the item from the netmap
|
||||
|
||||
@param Map The netmap to remove the item from
|
||||
@param Item The item to remove
|
||||
@param Value The variable to receive the value if not NULL
|
||||
|
||||
@return The key of the removed item.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
NetMapRemoveItem (
|
||||
IN NET_MAP *Map,
|
||||
IN NET_MAP_ITEM *Item,
|
||||
OUT VOID **Value OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Remove the first entry on the netmap
|
||||
|
||||
@param Map The netmap to remove the head from
|
||||
@param Value The variable to receive the value if not NULL
|
||||
|
||||
@return The key of the item removed
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
NetMapRemoveHead (
|
||||
IN NET_MAP *Map,
|
||||
OUT VOID **Value OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Remove the last entry on the netmap
|
||||
|
||||
@param Map The netmap to remove the tail from
|
||||
@param Value The variable to receive the value if not NULL
|
||||
|
||||
@return The key of the item removed
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
NetMapRemoveTail (
|
||||
IN NET_MAP *Map,
|
||||
OUT VOID **Value OPTIONAL
|
||||
|
@ -365,7 +558,21 @@ EFI_STATUS
|
|||
IN VOID *Arg
|
||||
);
|
||||
|
||||
/**
|
||||
Iterate through the netmap and call CallBack for each item. It will
|
||||
contiue the traverse if CallBack returns EFI_SUCCESS, otherwise, break
|
||||
from the loop. It returns the CallBack's last return value. This
|
||||
function is delete safe for the current item.
|
||||
|
||||
@param Map The Map to iterate through
|
||||
@param CallBack The callback function to call for each item.
|
||||
@param Arg The opaque parameter to the callback
|
||||
|
||||
@return It returns the CallBack's last return value.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetMapIterate (
|
||||
IN NET_MAP *Map,
|
||||
IN NET_MAP_CALLBACK CallBack,
|
||||
|
@ -376,7 +583,20 @@ NetMapIterate (
|
|||
//
|
||||
// Helper functions to implement driver binding and service binding protocols.
|
||||
//
|
||||
/**
|
||||
Create a child of the service that is identified by ServiceBindingGuid.
|
||||
|
||||
@param Controller The controller which has the service installed.
|
||||
@param Image The image handle used to open service.
|
||||
@param ServiceBindingGuid The service's Guid.
|
||||
@param ChildHandle The handle to receive the create child
|
||||
|
||||
@retval EFI_SUCCESS The child is successfully created.
|
||||
@retval Others Failed to create the child.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetLibCreateServiceChild (
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
|
@ -384,7 +604,20 @@ NetLibCreateServiceChild (
|
|||
OUT EFI_HANDLE *ChildHandle
|
||||
);
|
||||
|
||||
/**
|
||||
Destory a child of the service that is identified by ServiceBindingGuid.
|
||||
|
||||
@param Controller The controller which has the service installed.
|
||||
@param Image The image handle used to open service.
|
||||
@param ServiceBindingGuid The service's Guid.
|
||||
@param ChildHandle The child to destory
|
||||
|
||||
@retval EFI_SUCCESS The child is successfully destoried.
|
||||
@retval Others Failed to destory the child.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetLibDestroyServiceChild (
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
|
@ -392,14 +625,46 @@ NetLibDestroyServiceChild (
|
|||
IN EFI_HANDLE ChildHandle
|
||||
);
|
||||
|
||||
/**
|
||||
Convert the mac address of the simple network protocol installed on
|
||||
SnpHandle to a unicode string. Callers are responsible for freeing the
|
||||
string storage.
|
||||
|
||||
@param SnpHandle The handle where the simple network protocol is
|
||||
installed on.
|
||||
@param ImageHandle The image handle used to act as the agent handle to
|
||||
get the simple network protocol.
|
||||
@param MacString The pointer to store the address of the string
|
||||
representation of the mac address.
|
||||
|
||||
@retval EFI_OUT_OF_RESOURCES There are not enough memory resource.
|
||||
@retval other Failed to open the simple network protocol.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetLibGetMacString (
|
||||
IN EFI_HANDLE SnpHandle,
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN OUT CHAR16 **MacString
|
||||
);
|
||||
|
||||
/**
|
||||
Create an IPv4 device path node.
|
||||
|
||||
@param Node Pointer to the IPv4 device path node.
|
||||
@param Controller The handle where the NIC IP4 config protocol resides.
|
||||
@param LocalIp The local IPv4 address.
|
||||
@param LocalPort The local port.
|
||||
@param RemoteIp The remote IPv4 address.
|
||||
@param RemotePort The remote port.
|
||||
@param Protocol The protocol type in the IP header.
|
||||
@param UseDefaultAddress Whether this instance is using default address or not.
|
||||
|
||||
@retval None
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetLibCreateIPv4DPathNode (
|
||||
IN OUT IPv4_DEVICE_PATH *Node,
|
||||
IN EFI_HANDLE Controller,
|
||||
|
@ -411,24 +676,77 @@ NetLibCreateIPv4DPathNode (
|
|||
IN BOOLEAN UseDefaultAddress
|
||||
);
|
||||
|
||||
/**
|
||||
Find the UNDI/SNP handle from controller and protocol GUID.
|
||||
For example, IP will open a MNP child to transmit/receive
|
||||
packets, when MNP is stopped, IP should also be stopped. IP
|
||||
needs to find its own private data which is related the IP's
|
||||
service binding instance that is install on UNDI/SNP handle.
|
||||
Now, the controller is either a MNP or ARP child handle. But
|
||||
IP opens these handle BY_DRIVER, use that info, we can get the
|
||||
UNDI/SNP handle.
|
||||
|
||||
@param Controller Then protocol handle to check
|
||||
@param ProtocolGuid The protocol that is related with the handle.
|
||||
|
||||
@return The UNDI/SNP handle or NULL.
|
||||
|
||||
**/
|
||||
EFI_HANDLE
|
||||
EFIAPI
|
||||
NetLibGetNicHandle (
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_GUID *ProtocolGuid
|
||||
);
|
||||
|
||||
/**
|
||||
Add a Deferred Procedure Call to the end of the DPC queue.
|
||||
|
||||
@DpcTpl The EFI_TPL that the DPC should be invoked.
|
||||
@DpcProcedure Pointer to the DPC's function.
|
||||
@DpcContext Pointer to the DPC's context. Passed to DpcProcedure
|
||||
when DpcProcedure is invoked.
|
||||
|
||||
@retval EFI_SUCCESS The DPC was queued.
|
||||
@retval EFI_INVALID_PARAMETER DpcTpl is not a valid EFI_TPL.
|
||||
DpcProcedure is NULL.
|
||||
@retval EFI_OUT_OF_RESOURCES There are not enough resources available to
|
||||
add the DPC to the queue.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetLibQueueDpc (
|
||||
IN EFI_TPL DpcTpl,
|
||||
IN EFI_DPC_PROCEDURE DpcProcedure,
|
||||
IN VOID *DpcContext OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Add a Deferred Procedure Call to the end of the DPC queue.
|
||||
|
||||
@retval EFI_SUCCESS One or more DPCs were invoked.
|
||||
@retval EFI_NOT_FOUND No DPCs were invoked.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetLibDispatchDpc (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
The constructor function caches the pointer to DPC protocol.
|
||||
|
||||
The constructor function locates DPC protocol from protocol database.
|
||||
It will ASSERT() if that operation fails and it will always return EFI_SUCCESS.
|
||||
|
||||
@param ImageHandle The firmware allocated handle for the EFI image.
|
||||
@param SystemTable A pointer to the EFI System Table.
|
||||
|
||||
@retval EFI_SUCCESS The constructor always returns EFI_SUCCESS.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetLibDefaultUnload (
|
||||
|
@ -580,37 +898,110 @@ typedef struct {
|
|||
#define NET_TAILSPACE(BlockOp) \
|
||||
(UINTN)((BlockOp)->BlockTail - (BlockOp)->Tail)
|
||||
|
||||
/**
|
||||
Allocate a single block NET_BUF. Upon allocation, all the
|
||||
free space is in the tail room.
|
||||
|
||||
@param Len The length of the block.
|
||||
|
||||
@retval * Pointer to the allocated NET_BUF. If NULL the
|
||||
allocation failed due to resource limit.
|
||||
|
||||
**/
|
||||
NET_BUF *
|
||||
EFIAPI
|
||||
NetbufAlloc (
|
||||
IN UINT32 Len
|
||||
);
|
||||
|
||||
/**
|
||||
Free the buffer and its associated NET_VECTOR.
|
||||
|
||||
@param Nbuf Pointer to the NET_BUF to be freed.
|
||||
|
||||
@return None.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetbufFree (
|
||||
IN NET_BUF *Nbuf
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Get the position of some byte in the net buffer. This can be used
|
||||
to, for example, retrieve the IP header in the packet. It also
|
||||
returns the fragment that contains the byte which is used mainly by
|
||||
the buffer implementation itself.
|
||||
|
||||
@param Nbuf Pointer to the net buffer.
|
||||
@param Offset The index or offset of the byte
|
||||
@param Index Index of the fragment that contains the block
|
||||
|
||||
@retval * Pointer to the nth byte of data in the net buffer.
|
||||
If NULL, there is no such data in the net buffer.
|
||||
|
||||
**/
|
||||
UINT8 *
|
||||
EFIAPI
|
||||
NetbufGetByte (
|
||||
IN NET_BUF *Nbuf,
|
||||
IN UINT32 Offset,
|
||||
OUT UINT32 *Index OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Create a copy of NET_BUF that share the associated NET_DATA.
|
||||
|
||||
@param Nbuf Pointer to the net buffer to be cloned.
|
||||
|
||||
@retval * Pointer to the cloned net buffer.
|
||||
|
||||
**/
|
||||
NET_BUF *
|
||||
EFIAPI
|
||||
NetbufClone (
|
||||
IN NET_BUF *Nbuf
|
||||
);
|
||||
|
||||
/**
|
||||
Create a duplicated copy of Nbuf, data is copied. Also leave some
|
||||
head space before the data.
|
||||
|
||||
@param Nbuf Pointer to the net buffer to be cloned.
|
||||
@param Duplicate Pointer to the net buffer to duplicate to, if NULL
|
||||
a new net buffer is allocated.
|
||||
@param HeadSpace Length of the head space to reserve
|
||||
|
||||
@retval * Pointer to the duplicated net buffer.
|
||||
|
||||
**/
|
||||
NET_BUF *
|
||||
EFIAPI
|
||||
NetbufDuplicate (
|
||||
IN NET_BUF *Nbuf,
|
||||
IN NET_BUF *Duplicate OPTIONAL,
|
||||
IN UINT32 HeadSpace
|
||||
);
|
||||
|
||||
/**
|
||||
Create a NET_BUF structure which contains Len byte data of
|
||||
Nbuf starting from Offset. A new NET_BUF structure will be
|
||||
created but the associated data in NET_VECTOR is shared.
|
||||
This function exists to do IP packet fragmentation.
|
||||
|
||||
@param Nbuf Pointer to the net buffer to be cloned.
|
||||
@param Offset Starting point of the data to be included in new
|
||||
buffer.
|
||||
@param Len How many data to include in new data
|
||||
@param HeadSpace How many bytes of head space to reserve for
|
||||
protocol header
|
||||
|
||||
@retval * Pointer to the cloned net buffer.
|
||||
|
||||
**/
|
||||
NET_BUF *
|
||||
EFIAPI
|
||||
NetbufGetFragment (
|
||||
IN NET_BUF *Nbuf,
|
||||
IN UINT32 Offset,
|
||||
|
@ -618,27 +1009,80 @@ NetbufGetFragment (
|
|||
IN UINT32 HeadSpace
|
||||
);
|
||||
|
||||
/**
|
||||
Reserve some space in the header room of the buffer.
|
||||
Upon allocation, all the space are in the tail room
|
||||
of the buffer. Call this function to move some space
|
||||
to the header room. This function is quite limited in
|
||||
that it can only reserver space from the first block
|
||||
of an empty NET_BUF not built from the external. But
|
||||
it should be enough for the network stack.
|
||||
|
||||
@param Nbuf Pointer to the net buffer.
|
||||
@param Len The length of buffer to be reserverd.
|
||||
|
||||
@return None.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetbufReserve (
|
||||
IN NET_BUF *Nbuf,
|
||||
IN UINT32 Len
|
||||
);
|
||||
|
||||
/**
|
||||
Allocate some space from the header or tail of the buffer.
|
||||
|
||||
@param Nbuf Pointer to the net buffer.
|
||||
@param Len The length of the buffer to be allocated.
|
||||
@param FromHead The flag to indicate whether reserve the data from
|
||||
head or tail. TRUE for from head, and FALSE for
|
||||
from tail.
|
||||
|
||||
@retval * Pointer to the first byte of the allocated buffer.
|
||||
|
||||
**/
|
||||
UINT8 *
|
||||
EFIAPI
|
||||
NetbufAllocSpace (
|
||||
IN NET_BUF *Nbuf,
|
||||
IN UINT32 Len,
|
||||
IN BOOLEAN FromHead
|
||||
);
|
||||
|
||||
/**
|
||||
Trim some data from the header or tail of the buffer.
|
||||
|
||||
@param Nbuf Pointer to the net buffer.
|
||||
@param Len The length of the data to be trimmed.
|
||||
@param FromHead The flag to indicate whether trim data from head or
|
||||
tail. TRUE for from head, and FALSE for from tail.
|
||||
|
||||
@retval UINTN Length of the actually trimmed data.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
NetbufTrim (
|
||||
IN NET_BUF *Nbuf,
|
||||
IN UINT32 Len,
|
||||
IN BOOLEAN FromHead
|
||||
);
|
||||
|
||||
/**
|
||||
Copy the data from the specific offset to the destination.
|
||||
|
||||
@param Nbuf Pointer to the net buffer.
|
||||
@param Offset The sequence number of the first byte to copy.
|
||||
@param Len Length of the data to copy.
|
||||
@param Dest The destination of the data to copy to.
|
||||
|
||||
@retval UINTN The length of the copied data.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
NetbufCopy (
|
||||
IN NET_BUF *Nbuf,
|
||||
IN UINT32 Offset,
|
||||
|
@ -646,7 +1090,24 @@ NetbufCopy (
|
|||
IN UINT8 *Dest
|
||||
);
|
||||
|
||||
/**
|
||||
Build a NET_BUF from external blocks.
|
||||
|
||||
@param ExtFragment Pointer to the data block.
|
||||
@param ExtNum The number of the data block.
|
||||
@param HeadSpace The head space to be reserved.
|
||||
@param HeadLen The length of the protocol header, This function
|
||||
will pull that number of data into a linear block.
|
||||
@param ExtFree Pointer to the caller provided free function.
|
||||
@param Arg The argument passed to ExtFree when ExtFree is
|
||||
called.
|
||||
|
||||
@retval * Pointer to the net buffer built from the data
|
||||
blocks.
|
||||
|
||||
**/
|
||||
NET_BUF *
|
||||
EFIAPI
|
||||
NetbufFromExt (
|
||||
IN NET_FRAGMENT *ExtFragment,
|
||||
IN UINT32 ExtNum,
|
||||
|
@ -656,14 +1117,43 @@ NetbufFromExt (
|
|||
IN VOID *Arg OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Build a fragment table to contain the fragments in the
|
||||
buffer. This is the opposite of the NetbufFromExt.
|
||||
|
||||
@param Nbuf Point to the net buffer
|
||||
@param ExtFragment Pointer to the data block.
|
||||
@param ExtNum The number of the data block.
|
||||
|
||||
@retval EFI_BUFFER_TOO_SMALL The number of non-empty block is bigger than ExtNum
|
||||
@retval EFI_SUCCESS Fragment table built.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetbufBuildExt (
|
||||
IN NET_BUF *Nbuf,
|
||||
IN NET_FRAGMENT *ExtFragment,
|
||||
IN UINT32 *ExtNum
|
||||
);
|
||||
|
||||
/**
|
||||
Build a NET_BUF from a list of NET_BUF.
|
||||
|
||||
@param BufList A List of NET_BUF.
|
||||
@param HeadSpace The head space to be reserved.
|
||||
@param HeaderLen The length of the protocol header, This function
|
||||
will pull that number of data into a linear block.
|
||||
@param ExtFree Pointer to the caller provided free function.
|
||||
@param Arg The argument passed to ExtFree when ExtFree is
|
||||
called.
|
||||
|
||||
@retval * Pointer to the net buffer built from the data
|
||||
blocks.
|
||||
|
||||
**/
|
||||
NET_BUF *
|
||||
EFIAPI
|
||||
NetbufFromBufList (
|
||||
IN LIST_ENTRY *BufList,
|
||||
IN UINT32 HeadSpace,
|
||||
|
@ -672,74 +1162,207 @@ NetbufFromBufList (
|
|||
IN VOID *Arg OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Free a list of net buffers.
|
||||
|
||||
@param Head Pointer to the head of linked net buffers.
|
||||
|
||||
@return None.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetbufFreeList (
|
||||
IN LIST_ENTRY *Head
|
||||
);
|
||||
|
||||
/**
|
||||
Initiate the net buffer queue.
|
||||
|
||||
@param NbufQue Pointer to the net buffer queue to be initiated.
|
||||
|
||||
@return None.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetbufQueInit (
|
||||
IN NET_BUF_QUEUE *NbufQue
|
||||
);
|
||||
|
||||
/**
|
||||
Allocate an initialized net buffer queue.
|
||||
|
||||
None.
|
||||
|
||||
@retval * Pointer to the allocated net buffer queue.
|
||||
|
||||
**/
|
||||
NET_BUF_QUEUE *
|
||||
EFIAPI
|
||||
NetbufQueAlloc (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
Free a net buffer queue.
|
||||
|
||||
@param NbufQue Poitner to the net buffer queue to be freed.
|
||||
|
||||
@return None.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetbufQueFree (
|
||||
IN NET_BUF_QUEUE *NbufQue
|
||||
);
|
||||
|
||||
/**
|
||||
Remove a net buffer from head in the specific queue.
|
||||
|
||||
@param NbufQue Pointer to the net buffer queue.
|
||||
|
||||
@retval * Pointer to the net buffer removed from the specific
|
||||
queue.
|
||||
|
||||
**/
|
||||
NET_BUF *
|
||||
EFIAPI
|
||||
NetbufQueRemove (
|
||||
IN NET_BUF_QUEUE *NbufQue
|
||||
);
|
||||
|
||||
/**
|
||||
Append a buffer to the end of the queue.
|
||||
|
||||
@param NbufQue Pointer to the net buffer queue.
|
||||
@param Nbuf Pointer to the net buffer to be appended.
|
||||
|
||||
@return None.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetbufQueAppend (
|
||||
IN NET_BUF_QUEUE *NbufQue,
|
||||
IN NET_BUF *Nbuf
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Copy some data from the buffer queue to the destination.
|
||||
|
||||
@param NbufQue Pointer to the net buffer queue.
|
||||
@param Offset The sequence number of the first byte to copy.
|
||||
@param Len Length of the data to copy.
|
||||
@param Dest The destination of the data to copy to.
|
||||
|
||||
@retval UINTN The length of the copied data.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
NetbufQueCopy (
|
||||
IN NET_BUF_QUEUE *NbufQue,
|
||||
IN UINT32 Offset,
|
||||
IN UINT32 Len,
|
||||
IN UINT8 *Dest
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Copy some data from the buffer queue to the destination.
|
||||
|
||||
@param NbufQue Pointer to the net buffer queue.
|
||||
@param Offset The sequence number of the first byte to copy.
|
||||
@param Len Length of the data to copy.
|
||||
@param Dest The destination of the data to copy to.
|
||||
|
||||
@retval UINTN The length of the copied data.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
NetbufQueTrim (
|
||||
IN NET_BUF_QUEUE *NbufQue,
|
||||
IN UINT32 Len
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Flush the net buffer queue.
|
||||
|
||||
@param NbufQue Pointer to the queue to be flushed.
|
||||
|
||||
@return None.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetbufQueFlush (
|
||||
IN NET_BUF_QUEUE *NbufQue
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Compute checksum for a bulk of data.
|
||||
|
||||
@param Bulk Pointer to the data.
|
||||
@param Len Length of the data, in bytes.
|
||||
|
||||
@retval UINT16 The computed checksum.
|
||||
|
||||
**/
|
||||
UINT16
|
||||
EFIAPI
|
||||
NetblockChecksum (
|
||||
IN UINT8 *Bulk,
|
||||
IN UINT32 Len
|
||||
);
|
||||
|
||||
/**
|
||||
Add two checksums.
|
||||
|
||||
@param Checksum1 The first checksum to be added.
|
||||
@param Checksum2 The second checksum to be added.
|
||||
|
||||
@retval UINT16 The new checksum.
|
||||
|
||||
**/
|
||||
UINT16
|
||||
EFIAPI
|
||||
NetAddChecksum (
|
||||
IN UINT16 Checksum1,
|
||||
IN UINT16 Checksum2
|
||||
);
|
||||
|
||||
/**
|
||||
Compute the checksum for a NET_BUF.
|
||||
|
||||
@param Nbuf Pointer to the net buffer.
|
||||
|
||||
@retval UINT16 The computed checksum.
|
||||
|
||||
**/
|
||||
UINT16
|
||||
EFIAPI
|
||||
NetbufChecksum (
|
||||
IN NET_BUF *Nbuf
|
||||
);
|
||||
|
||||
/**
|
||||
Compute the checksum for TCP/UDP pseudo header.
|
||||
Src, Dst are in network byte order. and Len is
|
||||
in host byte order.
|
||||
|
||||
@param Src The source address of the packet.
|
||||
@param Dst The destination address of the packet.
|
||||
@param Proto The protocol type of the packet.
|
||||
@param Len The length of the packet.
|
||||
|
||||
@retval UINT16 The computed checksum.
|
||||
|
||||
**/
|
||||
UINT16
|
||||
EFIAPI
|
||||
NetPseudoHeadChecksum (
|
||||
IN IP4_ADDR Src,
|
||||
IN IP4_ADDR Dst,
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
/** @file
|
||||
The helper routines to access UDP service. It is used by both
|
||||
DHCP and MTFTP.
|
||||
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
Copyright (c) 2006 - 2008, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
|
@ -9,17 +11,6 @@ http://opensource.org/licenses/bsd-license.php
|
|||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
|
||||
Module Name:
|
||||
|
||||
Udp4Io.h
|
||||
|
||||
Abstract:
|
||||
|
||||
The helper routines to access UDP service. It is used by both
|
||||
DHCP and MTFTP.
|
||||
|
||||
|
||||
**/
|
||||
|
||||
#ifndef _UDP4IO_H_
|
||||
|
@ -133,7 +124,21 @@ BOOLEAN
|
|||
IN VOID *Context
|
||||
);
|
||||
|
||||
/**
|
||||
Create a UDP IO port to access the UDP service. It will
|
||||
create and configure a UDP child.
|
||||
|
||||
@param Controller The controller that has the UDP service binding
|
||||
protocol installed.
|
||||
@param Image The image handle for the driver.
|
||||
@param Configure The function to configure the created UDP child
|
||||
@param Context The opaque parameter for the Configure funtion.
|
||||
|
||||
@return A point to just created UDP IO port or NULL if failed.
|
||||
|
||||
**/
|
||||
UDP_IO_PORT *
|
||||
EFIAPI
|
||||
UdpIoCreatePort (
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
|
@ -141,17 +146,55 @@ UdpIoCreatePort (
|
|||
IN VOID *Context
|
||||
);
|
||||
|
||||
/**
|
||||
Free the UDP IO port and all its related resources including
|
||||
all the transmitted packet.
|
||||
|
||||
@param UdpIo The UDP IO port to free.
|
||||
|
||||
@retval EFI_SUCCESS The UDP IO port is freed.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
UdpIoFreePort (
|
||||
IN UDP_IO_PORT *UdpIo
|
||||
);
|
||||
|
||||
/**
|
||||
Clean up the UDP IO port. It will release all the transmitted
|
||||
datagrams and receive request. It will also configure NULL the
|
||||
UDP child.
|
||||
|
||||
@param UdpIo UDP IO port to clean up.
|
||||
|
||||
@return None
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
UdpIoCleanPort (
|
||||
IN UDP_IO_PORT *UdpIo
|
||||
);
|
||||
|
||||
/**
|
||||
Send a packet through the UDP IO port.
|
||||
|
||||
@param UdpIo The UDP IO Port to send the packet through
|
||||
@param Packet The packet to send
|
||||
@param EndPoint The local and remote access point
|
||||
@param Gateway The gateway to use
|
||||
@param CallBack The call back function to call when packet is
|
||||
transmitted or failed.
|
||||
@param Context The opque parameter to the CallBack
|
||||
|
||||
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource for the packet
|
||||
@retval EFI_SUCCESS The packet is successfully delivered to UDP for
|
||||
transmission.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
UdpIoSendDatagram (
|
||||
IN UDP_IO_PORT *UdpIo,
|
||||
IN NET_BUF *Packet,
|
||||
|
@ -161,13 +204,39 @@ UdpIoSendDatagram (
|
|||
IN VOID *Context
|
||||
);
|
||||
|
||||
/**
|
||||
The selection function to cancel a single sent datagram.
|
||||
|
||||
@param Token The UDP TX token to test againist.
|
||||
@param Context The context
|
||||
|
||||
@return TRUE if the packet is to be cancelled, otherwise FALSE.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
UdpIoCancelSentDatagram (
|
||||
IN UDP_IO_PORT *UdpIo,
|
||||
IN NET_BUF *Packet
|
||||
);
|
||||
|
||||
/**
|
||||
Issue a receive request to the UDP IO port.
|
||||
|
||||
@param UdpIo The UDP IO port to recieve the packet from.
|
||||
@param CallBack The call back function to execute when receive
|
||||
finished.
|
||||
@param Context The opque context to the call back
|
||||
@param HeadLen The lenght of the application's header
|
||||
|
||||
@retval EFI_ALREADY_STARTED There is already a pending receive request. Only
|
||||
one receive request is supported.
|
||||
@retval EFI_OUT_OF_RESOURCES Failed to allocate some resource.
|
||||
@retval EFI_SUCCESS The receive request is issued successfully.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
UdpIoRecvDatagram (
|
||||
IN UDP_IO_PORT *UdpIo,
|
||||
IN UDP_IO_CALLBACK CallBack,
|
||||
|
|
|
@ -70,6 +70,7 @@ DpcLibConstructor (
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
QueueDpc (
|
||||
IN EFI_TPL DpcTpl,
|
||||
IN EFI_DPC_PROCEDURE DpcProcedure,
|
||||
|
@ -93,6 +94,7 @@ QueueDpc (
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
DispatchDpc (
|
||||
VOID
|
||||
)
|
||||
|
|
|
@ -783,6 +783,7 @@ IpIoListenHandler (
|
|||
|
||||
**/
|
||||
IP_IO *
|
||||
EFIAPI
|
||||
IpIoCreate (
|
||||
IN EFI_HANDLE Image,
|
||||
IN EFI_HANDLE Controller
|
||||
|
@ -851,6 +852,7 @@ ReleaseIpIo:
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
IpIoOpen (
|
||||
IN IP_IO *IpIo,
|
||||
IN IP_IO_OPEN_DATA *OpenData
|
||||
|
@ -984,6 +986,7 @@ IpIoStop (
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
IpIoDestroy (
|
||||
IN IP_IO *IpIo
|
||||
)
|
||||
|
@ -1022,6 +1025,7 @@ IpIoDestroy (
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
IpIoSend (
|
||||
IN IP_IO *IpIo,
|
||||
IN NET_BUF *Pkt,
|
||||
|
@ -1072,6 +1076,7 @@ IpIoSend (
|
|||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
IpIoCancelTxToken (
|
||||
IN IP_IO *IpIo,
|
||||
IN VOID *Packet
|
||||
|
@ -1109,6 +1114,7 @@ IpIoCancelTxToken (
|
|||
|
||||
**/
|
||||
IP_IO_IP_INFO *
|
||||
EFIAPI
|
||||
IpIoAddIp (
|
||||
IN IP_IO *IpIo
|
||||
)
|
||||
|
@ -1199,6 +1205,7 @@ ReleaseIpInfo:
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
IpIoConfigIp (
|
||||
IN IP_IO_IP_INFO *IpInfo,
|
||||
IN OUT EFI_IP4_CONFIG_DATA *Ip4ConfigData OPTIONAL
|
||||
|
@ -1269,6 +1276,7 @@ OnExit:
|
|||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
IpIoRemoveIp (
|
||||
IN IP_IO *IpIo,
|
||||
IN IP_IO_IP_INFO *IpInfo
|
||||
|
@ -1307,6 +1315,7 @@ IpIoRemoveIp (
|
|||
|
||||
**/
|
||||
IP_IO_IP_INFO *
|
||||
EFIAPI
|
||||
IpIoFindSender (
|
||||
IN OUT IP_IO **IpIo,
|
||||
IN IP4_ADDR Src
|
||||
|
@ -1355,6 +1364,7 @@ IpIoFindSender (
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
IpIoGetIcmpErrStatus (
|
||||
IN ICMP_ERROR IcmpError,
|
||||
OUT BOOLEAN *IsHard, OPTIONAL
|
||||
|
|
|
@ -123,6 +123,7 @@ NibbleToHexChar (
|
|||
|
||||
**/
|
||||
INTN
|
||||
EFIAPI
|
||||
NetGetMaskLength (
|
||||
IN IP4_ADDR NetMask
|
||||
)
|
||||
|
@ -150,6 +151,7 @@ NetGetMaskLength (
|
|||
|
||||
**/
|
||||
INTN
|
||||
EFIAPI
|
||||
NetGetIpClass (
|
||||
IN IP4_ADDR Addr
|
||||
)
|
||||
|
@ -189,6 +191,7 @@ NetGetIpClass (
|
|||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
Ip4IsUnicast (
|
||||
IN IP4_ADDR Ip,
|
||||
IN IP4_ADDR NetMask
|
||||
|
@ -223,6 +226,7 @@ Ip4IsUnicast (
|
|||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
NetRandomInitSeed (
|
||||
VOID
|
||||
)
|
||||
|
@ -249,6 +253,7 @@ NetRandomInitSeed (
|
|||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
NetGetUint32 (
|
||||
IN UINT8 *Buf
|
||||
)
|
||||
|
@ -271,6 +276,7 @@ NetGetUint32 (
|
|||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetPutUint32 (
|
||||
IN UINT8 *Buf,
|
||||
IN UINT32 Data
|
||||
|
@ -290,6 +296,7 @@ NetPutUint32 (
|
|||
|
||||
**/
|
||||
LIST_ENTRY *
|
||||
EFIAPI
|
||||
NetListRemoveHead (
|
||||
LIST_ENTRY *Head
|
||||
)
|
||||
|
@ -324,6 +331,7 @@ NetListRemoveHead (
|
|||
|
||||
**/
|
||||
LIST_ENTRY *
|
||||
EFIAPI
|
||||
NetListRemoveTail (
|
||||
LIST_ENTRY *Head
|
||||
)
|
||||
|
@ -359,6 +367,7 @@ NetListRemoveTail (
|
|||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetListInsertAfter (
|
||||
IN LIST_ENTRY *PrevEntry,
|
||||
IN LIST_ENTRY *NewEntry
|
||||
|
@ -381,6 +390,7 @@ NetListInsertAfter (
|
|||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetListInsertBefore (
|
||||
IN LIST_ENTRY *PostEntry,
|
||||
IN LIST_ENTRY *NewEntry
|
||||
|
@ -402,6 +412,7 @@ NetListInsertBefore (
|
|||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetMapInit (
|
||||
IN NET_MAP *Map
|
||||
)
|
||||
|
@ -423,6 +434,7 @@ NetMapInit (
|
|||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetMapClean (
|
||||
IN NET_MAP *Map
|
||||
)
|
||||
|
@ -464,6 +476,7 @@ NetMapClean (
|
|||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
NetMapIsEmpty (
|
||||
IN NET_MAP *Map
|
||||
)
|
||||
|
@ -482,6 +495,7 @@ NetMapIsEmpty (
|
|||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
NetMapGetCount (
|
||||
IN NET_MAP *Map
|
||||
)
|
||||
|
@ -548,6 +562,7 @@ NetMapAllocItem (
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetMapInsertHead (
|
||||
IN NET_MAP *Map,
|
||||
IN VOID *Key,
|
||||
|
@ -585,6 +600,7 @@ NetMapInsertHead (
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetMapInsertTail (
|
||||
IN NET_MAP *Map,
|
||||
IN VOID *Key,
|
||||
|
@ -649,6 +665,7 @@ NetItemInMap (
|
|||
|
||||
**/
|
||||
NET_MAP_ITEM *
|
||||
EFIAPI
|
||||
NetMapFindKey (
|
||||
IN NET_MAP *Map,
|
||||
IN VOID *Key
|
||||
|
@ -682,6 +699,7 @@ NetMapFindKey (
|
|||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
NetMapRemoveItem (
|
||||
IN NET_MAP *Map,
|
||||
IN NET_MAP_ITEM *Item,
|
||||
|
@ -713,6 +731,7 @@ NetMapRemoveItem (
|
|||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
NetMapRemoveHead (
|
||||
IN NET_MAP *Map,
|
||||
OUT VOID **Value OPTIONAL
|
||||
|
@ -749,6 +768,7 @@ NetMapRemoveHead (
|
|||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
NetMapRemoveTail (
|
||||
IN NET_MAP *Map,
|
||||
OUT VOID **Value OPTIONAL
|
||||
|
@ -789,6 +809,7 @@ NetMapRemoveTail (
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetMapIterate (
|
||||
IN NET_MAP *Map,
|
||||
IN NET_MAP_CALLBACK CallBack,
|
||||
|
@ -950,6 +971,7 @@ NetLibDefaultUnload (
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetLibCreateServiceChild (
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_HANDLE Image,
|
||||
|
@ -1000,6 +1022,7 @@ NetLibCreateServiceChild (
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetLibDestroyServiceChild (
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_HANDLE Image,
|
||||
|
@ -1053,6 +1076,7 @@ NetLibDestroyServiceChild (
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetLibGetMacString (
|
||||
IN EFI_HANDLE SnpHandle,
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
|
@ -1181,6 +1205,7 @@ ON_EXIT:
|
|||
@retval None
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetLibCreateIPv4DPathNode (
|
||||
IN OUT IPv4_DEVICE_PATH *Node,
|
||||
IN EFI_HANDLE Controller,
|
||||
|
@ -1229,6 +1254,7 @@ NetLibCreateIPv4DPathNode (
|
|||
|
||||
**/
|
||||
EFI_HANDLE
|
||||
EFIAPI
|
||||
NetLibGetNicHandle (
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_GUID *ProtocolGuid
|
||||
|
@ -1280,6 +1306,7 @@ NetLibGetNicHandle (
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetLibQueueDpc (
|
||||
IN EFI_TPL DpcTpl,
|
||||
IN EFI_DPC_PROCEDURE DpcProcedure,
|
||||
|
@ -1297,6 +1324,7 @@ NetLibQueueDpc (
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetLibDispatchDpc (
|
||||
VOID
|
||||
)
|
||||
|
|
|
@ -100,6 +100,7 @@ FreeNbuf:
|
|||
|
||||
**/
|
||||
NET_BUF *
|
||||
EFIAPI
|
||||
NetbufAlloc (
|
||||
IN UINT32 Len
|
||||
)
|
||||
|
@ -202,6 +203,7 @@ NetbufFreeVector (
|
|||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetbufFree (
|
||||
IN NET_BUF *Nbuf
|
||||
)
|
||||
|
@ -231,6 +233,7 @@ NetbufFree (
|
|||
|
||||
**/
|
||||
NET_BUF *
|
||||
EFIAPI
|
||||
NetbufClone (
|
||||
IN NET_BUF *Nbuf
|
||||
)
|
||||
|
@ -278,6 +281,7 @@ NetbufClone (
|
|||
|
||||
**/
|
||||
NET_BUF *
|
||||
EFIAPI
|
||||
NetbufDuplicate (
|
||||
IN NET_BUF *Nbuf,
|
||||
IN NET_BUF *Duplicate OPTIONAL,
|
||||
|
@ -319,6 +323,7 @@ NetbufDuplicate (
|
|||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetbufFreeList (
|
||||
IN LIST_ENTRY *Head
|
||||
)
|
||||
|
@ -356,6 +361,7 @@ NetbufFreeList (
|
|||
|
||||
**/
|
||||
UINT8 *
|
||||
EFIAPI
|
||||
NetbufGetByte (
|
||||
IN NET_BUF *Nbuf,
|
||||
IN UINT32 Offset,
|
||||
|
@ -517,6 +523,7 @@ NetbufGetFragmentFree (
|
|||
|
||||
**/
|
||||
NET_BUF *
|
||||
EFIAPI
|
||||
NetbufGetFragment (
|
||||
IN NET_BUF *Nbuf,
|
||||
IN UINT32 Offset,
|
||||
|
@ -699,6 +706,7 @@ FreeChild:
|
|||
|
||||
**/
|
||||
NET_BUF *
|
||||
EFIAPI
|
||||
NetbufFromExt (
|
||||
IN NET_FRAGMENT *ExtFragment,
|
||||
IN UINT32 ExtNum,
|
||||
|
@ -869,6 +877,7 @@ FreeFirstBlock:
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetbufBuildExt (
|
||||
IN NET_BUF *Nbuf,
|
||||
IN NET_FRAGMENT *ExtFragment,
|
||||
|
@ -915,6 +924,7 @@ NetbufBuildExt (
|
|||
|
||||
**/
|
||||
NET_BUF *
|
||||
EFIAPI
|
||||
NetbufFromBufList (
|
||||
IN LIST_ENTRY *BufList,
|
||||
IN UINT32 HeadSpace,
|
||||
|
@ -988,6 +998,7 @@ NetbufFromBufList (
|
|||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetbufReserve (
|
||||
IN NET_BUF *Nbuf,
|
||||
IN UINT32 Len
|
||||
|
@ -1019,6 +1030,7 @@ NetbufReserve (
|
|||
|
||||
**/
|
||||
UINT8 *
|
||||
EFIAPI
|
||||
NetbufAllocSpace (
|
||||
IN NET_BUF *Nbuf,
|
||||
IN UINT32 Len,
|
||||
|
@ -1140,6 +1152,7 @@ NetblockTrim (
|
|||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
NetbufTrim (
|
||||
IN NET_BUF *Nbuf,
|
||||
IN UINT32 Len,
|
||||
|
@ -1204,6 +1217,7 @@ NetbufTrim (
|
|||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
NetbufCopy (
|
||||
IN NET_BUF *Nbuf,
|
||||
IN UINT32 Offset,
|
||||
|
@ -1300,6 +1314,7 @@ NetbufCopy (
|
|||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetbufQueInit (
|
||||
IN NET_BUF_QUEUE *NbufQue
|
||||
)
|
||||
|
@ -1323,6 +1338,7 @@ NetbufQueInit (
|
|||
|
||||
**/
|
||||
NET_BUF_QUEUE *
|
||||
EFIAPI
|
||||
NetbufQueAlloc (
|
||||
VOID
|
||||
)
|
||||
|
@ -1349,6 +1365,7 @@ NetbufQueAlloc (
|
|||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetbufQueFree (
|
||||
IN NET_BUF_QUEUE *NbufQue
|
||||
)
|
||||
|
@ -1374,6 +1391,7 @@ NetbufQueFree (
|
|||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetbufQueAppend (
|
||||
IN NET_BUF_QUEUE *NbufQue,
|
||||
IN NET_BUF *Nbuf
|
||||
|
@ -1399,6 +1417,7 @@ NetbufQueAppend (
|
|||
|
||||
**/
|
||||
NET_BUF *
|
||||
EFIAPI
|
||||
NetbufQueRemove (
|
||||
IN NET_BUF_QUEUE *NbufQue
|
||||
)
|
||||
|
@ -1528,6 +1547,7 @@ NetbufQueCopy (
|
|||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
NetbufQueTrim (
|
||||
IN NET_BUF_QUEUE *NbufQue,
|
||||
IN UINT32 Len
|
||||
|
@ -1586,6 +1606,7 @@ NetbufQueTrim (
|
|||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
NetbufQueFlush (
|
||||
IN NET_BUF_QUEUE *NbufQue
|
||||
)
|
||||
|
@ -1609,6 +1630,7 @@ NetbufQueFlush (
|
|||
|
||||
**/
|
||||
UINT16
|
||||
EFIAPI
|
||||
NetblockChecksum (
|
||||
IN UINT8 *Bulk,
|
||||
IN UINT32 Len
|
||||
|
@ -1653,6 +1675,7 @@ NetblockChecksum (
|
|||
|
||||
**/
|
||||
UINT16
|
||||
EFIAPI
|
||||
NetAddChecksum (
|
||||
IN UINT16 Checksum1,
|
||||
IN UINT16 Checksum2
|
||||
|
@ -1683,6 +1706,7 @@ NetAddChecksum (
|
|||
|
||||
**/
|
||||
UINT16
|
||||
EFIAPI
|
||||
NetbufChecksum (
|
||||
IN NET_BUF *Nbuf
|
||||
)
|
||||
|
@ -1736,6 +1760,7 @@ NetbufChecksum (
|
|||
|
||||
**/
|
||||
UINT16
|
||||
EFIAPI
|
||||
NetPseudoHeadChecksum (
|
||||
IN IP4_ADDR Src,
|
||||
IN IP4_ADDR Dst,
|
||||
|
|
|
@ -256,6 +256,7 @@ UdpIoFreeRxToken (
|
|||
|
||||
**/
|
||||
UDP_IO_PORT *
|
||||
EFIAPI
|
||||
UdpIoCreatePort (
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_HANDLE Image,
|
||||
|
@ -387,6 +388,7 @@ UdpIoCancelDgrams (
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
UdpIoFreePort (
|
||||
IN UDP_IO_PORT *UdpIo
|
||||
)
|
||||
|
@ -444,6 +446,7 @@ UdpIoFreePort (
|
|||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
UdpIoCleanPort (
|
||||
IN UDP_IO_PORT *UdpIo
|
||||
)
|
||||
|
@ -532,6 +535,7 @@ UdpIoOnDgramSent (
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
UdpIoSendDatagram (
|
||||
IN UDP_IO_PORT *UdpIo,
|
||||
IN NET_BUF *Packet,
|
||||
|
@ -604,6 +608,7 @@ UdpIoCancelSingleDgram (
|
|||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
UdpIoCancelSentDatagram (
|
||||
IN UDP_IO_PORT *UdpIo,
|
||||
IN NET_BUF *Packet
|
||||
|
@ -772,6 +777,7 @@ Returns:
|
|||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
UdpIoRecvDatagram (
|
||||
IN UDP_IO_PORT *UdpIo,
|
||||
IN UDP_IO_CALLBACK CallBack,
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
#******************************************************************************
|
||||
#*
|
||||
#* Copyright (c) 2006, Intel Corporation
|
||||
#* All rights reserved. This program and the accompanying materials
|
||||
#* are licensed and made available under the terms and conditions of the BSD License
|
||||
#* which accompanies this distribution. The full text of the license may be found at
|
||||
#* http://opensource.org/licenses/bsd-license.php
|
||||
#*
|
||||
#* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
#* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#*
|
||||
#******************************************************************************
|
||||
#/**@file
|
||||
# Low leve IA32 specific debug support functions.
|
||||
#
|
||||
# Copyright (c) 2006, Intel Corporation
|
||||
# All rights reserved. This program and the accompanying materials
|
||||
# are licensed and made available under the terms and conditions of the BSD License
|
||||
# which accompanies this distribution. The full text of the license may be found at
|
||||
# http://opensource.org/licenses/bsd-license.php
|
||||
#
|
||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#
|
||||
#**/
|
||||
|
||||
.globl ASM_PFX(OrigVector)
|
||||
.globl ASM_PFX(InterruptEntryStub)
|
||||
|
@ -29,12 +30,12 @@ ASM_PFX(StubSize): .long ASM_PFX(InterruptEntryStubEnd) - ASM_PFX(Interr
|
|||
ASM_PFX(FxStorSupport):
|
||||
push %ebx
|
||||
mov $0x1,%eax
|
||||
cpuid
|
||||
cpuid
|
||||
mov %edx,%eax
|
||||
and $0x1000000,%eax
|
||||
shr $0x18,%eax
|
||||
pop %ebx
|
||||
ret
|
||||
ret
|
||||
|
||||
.globl ASM_PFX(GetIdtr)
|
||||
ASM_PFX(GetIdtr):
|
||||
|
@ -43,25 +44,25 @@ ASM_PFX(GetIdtr):
|
|||
add $0xfffffff8,%esp
|
||||
sidtl 0xfffffffa(%ebp)
|
||||
mov 0xfffffffc(%ebp),%eax
|
||||
leave
|
||||
ret
|
||||
leave
|
||||
ret
|
||||
|
||||
.globl ASM_PFX(WriteInterruptFlag)
|
||||
ASM_PFX(WriteInterruptFlag):
|
||||
push %ebp
|
||||
mov %esp,%ebp
|
||||
pushf
|
||||
pushf
|
||||
pop %eax
|
||||
and $0x200,%eax
|
||||
shr $0x9,%eax
|
||||
mov 0x8(%ebp),%ecx
|
||||
or %cl,%cl
|
||||
jne ASM_PFX(WriteInterruptFlag+0x17)
|
||||
cli
|
||||
cli
|
||||
jmp ASM_PFX(WriteInterruptFlag+0x18)
|
||||
sti
|
||||
leave
|
||||
ret
|
||||
sti
|
||||
leave
|
||||
ret
|
||||
|
||||
.globl ASM_PFX(Vect2Desc)
|
||||
ASM_PFX(Vect2Desc):
|
||||
|
@ -74,8 +75,8 @@ ASM_PFX(Vect2Desc):
|
|||
movw $0x8e00,0x4(%ecx)
|
||||
shr $0x10,%eax
|
||||
mov %ax,0x6(%ecx)
|
||||
leave
|
||||
ret
|
||||
leave
|
||||
ret
|
||||
|
||||
.globl ASM_PFX(InterruptEntryStub)
|
||||
ASM_PFX(InterruptEntryStub):
|
||||
|
@ -88,8 +89,8 @@ ASM_PFX(InterruptEntryStubEnd):
|
|||
|
||||
.globl ASM_PFX(CommonIdtEntry)
|
||||
ASM_PFX(CommonIdtEntry):
|
||||
pusha
|
||||
pushf
|
||||
pusha
|
||||
pushf
|
||||
pop %eax
|
||||
mov %eax,0x0
|
||||
cmpl $0x8,0x0
|
||||
|
@ -259,12 +260,12 @@ ASM_PFX(CommonIdtEntry):
|
|||
push %ebx
|
||||
push %cs
|
||||
push $0x0
|
||||
iret
|
||||
iret
|
||||
|
||||
PhonyIretd:
|
||||
popa
|
||||
popa
|
||||
mov 0x0,%esp
|
||||
jmp *0x0
|
||||
popa
|
||||
popa
|
||||
mov 0x0,%esp
|
||||
iret
|
||||
iret
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
;******************************************************************************
|
||||
;*
|
||||
;* Copyright (c) 2006, Intel Corporation
|
||||
;* All rights reserved. This program and the accompanying materials
|
||||
;* are licensed and made available under the terms and conditions of the BSD License
|
||||
;* which accompanies this distribution. The full text of the license may be found at
|
||||
;* http://opensource.org/licenses/bsd-license.php
|
||||
;*
|
||||
;* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
;* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
;*
|
||||
;******************************************************************************
|
||||
;/** @file
|
||||
; Low leve IA32 specific debug support functions.
|
||||
;
|
||||
; Copyright (c) 2006, Intel Corporation. <BR>
|
||||
; All rights reserved. This program and the accompanying materials
|
||||
; are licensed and made available under the terms and conditions of the BSD License
|
||||
; which accompanies this distribution. The full text of the license may be found at
|
||||
; http://opensource.org/licenses/bsd-license.php
|
||||
;
|
||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
;
|
||||
;**/
|
||||
|
||||
.586p
|
||||
.MODEL FLAT, C
|
||||
|
@ -95,7 +96,7 @@ OrigVector dd 66666666h ; ?
|
|||
align 16
|
||||
DebugStackEnd db "DbgStkEnd >>>>>>" ;; 16 byte long string - must be 16 bytes to preserve alignment
|
||||
dd 1ffdh dup (000000000h) ;; 32K should be enough stack
|
||||
;; This allocation is coocked to insure
|
||||
;; This allocation is coocked to insure
|
||||
;; that the the buffer for the FXSTORE instruction
|
||||
;; will be 16 byte aligned also.
|
||||
;;
|
||||
|
|
|
@ -1,24 +1,18 @@
|
|||
//++
|
||||
// Copyright (c) 2006, Intel Corporation
|
||||
// All rights reserved. This program and the accompanying materials
|
||||
// are licensed and made available under the terms and conditions of the BSD License
|
||||
// which accompanies this distribution. The full text of the license may be found at
|
||||
// http://opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
//
|
||||
// Module Name:
|
||||
//
|
||||
// AsmFuncs.s
|
||||
//
|
||||
// Abstract:
|
||||
//
|
||||
// Low level IPF routines used by the debug support driver
|
||||
//
|
||||
// Revision History:
|
||||
//
|
||||
//--
|
||||
/// @file
|
||||
/// Low level IPF routines used by the debug support driver
|
||||
///
|
||||
/// Copyright (c) 2006, Intel Corporation
|
||||
/// All rights reserved. This program and the accompanying materials
|
||||
/// are licensed and made available under the terms and conditions of the BSD License
|
||||
/// which accompanies this distribution. The full text of the license may be found at
|
||||
/// http://opensource.org/licenses/bsd-license.php
|
||||
///
|
||||
/// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
/// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
///
|
||||
/// Module Name: AsmFuncs.s
|
||||
///
|
||||
///
|
||||
|
||||
|
||||
#include "common.i"
|
||||
|
@ -127,32 +121,32 @@ LoopBack: // $L143:
|
|||
// our chained handler installed:
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// This IVT entry is Failsafe bundle
|
||||
// reserved by the
|
||||
// Itanium architecture Original bundle 0
|
||||
// and is used for
|
||||
// for locating our
|
||||
// handler and the
|
||||
// original bundle Patch code...
|
||||
// zero of the ext
|
||||
// interrupt handler
|
||||
//
|
||||
// RSVD (3400) Unused
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// This IVT entry is Failsafe bundle
|
||||
// reserved by the
|
||||
// Itanium architecture Original bundle 0
|
||||
// and is used for
|
||||
// for locating our
|
||||
// handler and the
|
||||
// original bundle Patch code...
|
||||
// zero of the ext
|
||||
// interrupt handler
|
||||
//
|
||||
// RSVD (3400) Unused
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// EXT_INT (3000) Bundle 0 Bundle zero - This one is
|
||||
// modified, all other bundles
|
||||
// in the EXT_INT entry are
|
||||
|
@ -430,7 +424,7 @@ RelocateSlot:
|
|||
add loc3=loc2, in1;; // loc3 = physical address of branch target
|
||||
(p14) sub loc2=r0,loc2;; // flip sign in loc2 if offset is negative
|
||||
sub loc4=loc3,in2;; // loc4 = relative offset from new ip to branch target
|
||||
cmp.lt p15, p14 = 0, loc4;; // get new sign bit
|
||||
cmp.lt p15, p14 = 0, loc4;; // get new sign bit
|
||||
(p14) sub loc5=r0,loc4 // get absolute value of offset
|
||||
(p15) mov loc5=loc4;;
|
||||
movl loc6=0x0FFFFFF;; // maximum offset in bytes for ip-rel branch
|
||||
|
@ -1230,7 +1224,7 @@ HookHandler:
|
|||
// the backing store. The processor, however may not be aware that the
|
||||
// stacked registers need to be reloaded from the backing store. Therefore,
|
||||
// we explicitly cause the RSE to refresh the stacked register's contents
|
||||
// from the backing store.
|
||||
// from the backing store.
|
||||
mov loc0=ar.rsc // get RSC value
|
||||
mov loc1=ar.rsc // save it so we can restore it
|
||||
movl loc3=0xffffffffc000ffff;; // create mask for clearing RSC.loadrs
|
||||
|
@ -1307,7 +1301,7 @@ PatchCode:
|
|||
movl SCRATCH_REG1 = ~( MASK(PSR_DT,1) | MASK(PSR_RT,1));;
|
||||
and SCRATCH_REG1 = SCRATCH_REG0, SCRATCH_REG1;;
|
||||
mov psr.l = SCRATCH_REG1;;
|
||||
srlz.d
|
||||
srlz.d
|
||||
tbit.z p14, p15 = SCRATCH_REG6, PSR_IS;; // Check to see if we were
|
||||
// interrupted from IA32
|
||||
// context. If so, bail out
|
||||
|
|
|
@ -1,24 +1,19 @@
|
|||
//++
|
||||
// Copyright (c) 2006, Intel Corporation
|
||||
// All rights reserved. This program and the accompanying materials
|
||||
// are licensed and made available under the terms and conditions of the BSD License
|
||||
// which accompanies this distribution. The full text of the license may be found at
|
||||
// http://opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
//
|
||||
// Module Name:
|
||||
//
|
||||
// Ds64Macros.i
|
||||
//
|
||||
// Abstract:
|
||||
//
|
||||
// This is set of macros used in calculating offsets in the IVT
|
||||
//
|
||||
// Revision History:
|
||||
//
|
||||
//--
|
||||
/// @file
|
||||
/// This is set of macros used in calculating offsets in the IVT.
|
||||
///
|
||||
/// Copyright (c) 2006, Intel Corporation
|
||||
/// All rights reserved. This program and the accompanying materials
|
||||
/// are licensed and made available under the terms and conditions of the BSD License
|
||||
/// which accompanies this distribution. The full text of the license may be found at
|
||||
/// http://opensource.org/licenses/bsd-license.php
|
||||
///
|
||||
/// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
/// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
///
|
||||
/// Module Name: Ds64Macros.i
|
||||
///
|
||||
///
|
||||
|
||||
|
||||
#define EXCPT_EXTERNAL_INTERRUPT 12
|
||||
#define MASK_0_4 0x000000000000001F // mask bits 0 through 4
|
||||
|
|
|
@ -1,24 +1,19 @@
|
|||
//++
|
||||
// Copyright (c) 2006, Intel Corporation
|
||||
// All rights reserved. This program and the accompanying materials
|
||||
// are licensed and made available under the terms and conditions of the BSD License
|
||||
// which accompanies this distribution. The full text of the license may be found at
|
||||
// http://opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
//
|
||||
// Module Name:
|
||||
//
|
||||
// Common.i
|
||||
//
|
||||
// Abstract:
|
||||
//
|
||||
// This is set of useful macros
|
||||
//
|
||||
// Revision History:
|
||||
//
|
||||
//--
|
||||
/// @file
|
||||
/// This is set of useful macros.
|
||||
///
|
||||
/// Copyright (c) 2006, Intel Corporation
|
||||
/// All rights reserved. This program and the accompanying materials
|
||||
/// are licensed and made available under the terms and conditions of the BSD License
|
||||
/// which accompanies this distribution. The full text of the license may be found at
|
||||
/// http://opensource.org/licenses/bsd-license.php
|
||||
///
|
||||
/// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
/// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
///
|
||||
/// Module Name: common.i
|
||||
///
|
||||
///
|
||||
|
||||
|
||||
#define NESTED_SETUP(i,l,o,r) \
|
||||
alloc loc1=ar##.##pfs,i,l,o,r ; \
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
#******************************************************************************
|
||||
#*
|
||||
#* Copyright (c) 2007, Intel Corporation
|
||||
#* All rights reserved. This program and the accompanying materials
|
||||
#* are licensed and made available under the terms and conditions of the BSD License
|
||||
#* which accompanies this distribution. The full text of the license may be found at
|
||||
#* http://opensource.org/licenses/bsd-license.php
|
||||
#*
|
||||
#* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
#* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#*
|
||||
#******************************************************************************
|
||||
#/**@file
|
||||
# Low leve x64 specific debug support functions.
|
||||
#
|
||||
# Copyright (c) 2006, Intel Corporation
|
||||
# All rights reserved. This program and the accompanying materials
|
||||
# are licensed and made available under the terms and conditions of the BSD License
|
||||
# which accompanies this distribution. The full text of the license may be found at
|
||||
# http://opensource.org/licenses/bsd-license.php
|
||||
#
|
||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#
|
||||
#**/
|
||||
|
||||
.globl _OrigVector
|
||||
.globl _InterruptEntryStub
|
||||
|
@ -27,31 +28,31 @@ _StubSize: .long _InterruptEntryStubEnd - _InterruptEntryStub
|
|||
|
||||
.globl _FxStorSupport
|
||||
_FxStorSupport:
|
||||
ret
|
||||
ret
|
||||
|
||||
.globl _GetIdtr
|
||||
_GetIdtr:
|
||||
ret
|
||||
ret
|
||||
|
||||
.globl _WriteInterruptFlag
|
||||
_WriteInterruptFlag:
|
||||
ret
|
||||
ret
|
||||
|
||||
.globl _Vect2Desc
|
||||
_Vect2Desc:
|
||||
ret
|
||||
ret
|
||||
|
||||
.globl _InterruptEntryStub
|
||||
_InterruptEntryStub:
|
||||
ret
|
||||
ret
|
||||
|
||||
.globl _InterruptEntryStubEnd
|
||||
_InterruptEntryStubEnd:
|
||||
ret
|
||||
ret
|
||||
|
||||
.globl _CommonIdtEntry
|
||||
_CommonIdtEntry:
|
||||
ret
|
||||
ret
|
||||
|
||||
PhonyIretd:
|
||||
iret
|
||||
iret
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
;******************************************************************************
|
||||
;*
|
||||
;* Copyright (c) 2006, Intel Corporation
|
||||
;* All rights reserved. This program and the accompanying materials
|
||||
;* are licensed and made available under the terms and conditions of the BSD License
|
||||
;* which accompanies this distribution. The full text of the license may be found at
|
||||
;* http://opensource.org/licenses/bsd-license.php
|
||||
;*
|
||||
;* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
;* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
;*
|
||||
;******************************************************************************
|
||||
;/** @file
|
||||
; Low level x64 routines used by the debug support driver.
|
||||
;
|
||||
; Copyright (c) 2007 - 2008, Intel Corporation. <BR>
|
||||
; All rights reserved. This program and the accompanying materials
|
||||
; are licensed and made available under the terms and conditions of the BSD License
|
||||
; which accompanies this distribution. The full text of the license may be found at
|
||||
; http://opensource.org/licenses/bsd-license.php
|
||||
;
|
||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
;
|
||||
;**/
|
||||
|
||||
EXCPT64_DIVIDE_ERROR EQU 0
|
||||
EXCPT64_DEBUG EQU 1
|
||||
|
@ -93,7 +94,7 @@ OrigVector dq 6666666666666666h ; ?
|
|||
align 16
|
||||
DebugStackEnd db "DbgStkEnd >>>>>>" ;; 16 byte long string - must be 16 bytes to preserve alignment
|
||||
dd 1ffch dup (000000000h) ;; 32K should be enough stack
|
||||
;; This allocation is coocked to insure
|
||||
;; This allocation is coocked to insure
|
||||
;; that the the buffer for the FXSTORE instruction
|
||||
;; will be 16 byte aligned also.
|
||||
;;
|
||||
|
|
|
@ -1,25 +1,17 @@
|
|||
// *++
|
||||
///** @file
|
||||
//
|
||||
// Copyright (c) 2007, Intel Corporation
|
||||
// All rights reserved. This program and the accompanying materials
|
||||
// are licensed and made available under the terms and conditions of the BSD License
|
||||
// which accompanies this distribution. The full text of the license may be found at
|
||||
// http://opensource.org/licenses/bsd-license.php
|
||||
// Sample Inventory Data
|
||||
//
|
||||
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
// Copyright (c) 2004 - 2008, Intel Corporation. <BR>
|
||||
// All rights reserved. This program and the accompanying materials
|
||||
// are licensed and made available under the terms and conditions of the BSD License
|
||||
// which accompanies this distribution. The full text of the license may be found at
|
||||
// http://opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
// Module Name:
|
||||
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
//
|
||||
// Inventory.vfr
|
||||
//
|
||||
// Abstract:
|
||||
//
|
||||
// Sample Inventory Data.
|
||||
//
|
||||
// Revision History:
|
||||
//
|
||||
// --*/
|
||||
//**/
|
||||
|
||||
#define INVENTORY_GUID { 0xb3f56470, 0x6141, 0x4621, 0x8f, 0x19, 0x70, 0x4e, 0x57, 0x7a, 0xa9, 0xe8 }
|
||||
|
||||
|
|
|
@ -1,25 +1,17 @@
|
|||
// *++
|
||||
///** @file
|
||||
//
|
||||
// Copyright (c) 2007, Intel Corporation
|
||||
// All rights reserved. This program and the accompanying materials
|
||||
// are licensed and made available under the terms and conditions of the BSD License
|
||||
// which accompanies this distribution. The full text of the license may be found at
|
||||
// http://opensource.org/licenses/bsd-license.php
|
||||
// Sample Setup formset.
|
||||
//
|
||||
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
// Copyright (c) 2004 - 2008, Intel Corporation. <BR>
|
||||
// All rights reserved. This program and the accompanying materials
|
||||
// are licensed and made available under the terms and conditions of the BSD License
|
||||
// which accompanies this distribution. The full text of the license may be found at
|
||||
// http://opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
// Module Name:
|
||||
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
//
|
||||
// Vfr.vfr
|
||||
//
|
||||
// Abstract:
|
||||
//
|
||||
// Sample Setup formset
|
||||
//
|
||||
// Revision History:
|
||||
//
|
||||
// --*/
|
||||
//**/
|
||||
|
||||
|
||||
#include "NVDataStruc.h"
|
||||
|
@ -328,7 +320,7 @@ formset
|
|||
maximum = 243,
|
||||
step = 1,
|
||||
default = 18,
|
||||
|
||||
|
||||
endnumeric;
|
||||
endif;
|
||||
|
||||
|
|
|
@ -1,15 +1,17 @@
|
|||
#****************************************************************************
|
||||
#*
|
||||
#* Copyright (c) 2006, Intel Corporation
|
||||
#* All rights reserved. This program and the accompanying materials
|
||||
#* are licensed and made available under the terms and conditions of the BSD License
|
||||
#* which accompanies this distribution. The full text of the license may be found at
|
||||
#* http://opensource.org/licenses/bsd-license.php
|
||||
#*
|
||||
#* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
#* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#*
|
||||
#****************************************************************************
|
||||
##/**@file
|
||||
# Low level IA32 specific EBC support routines.
|
||||
#
|
||||
# Copyright (c) 2007 - 2008, Intel Corporation
|
||||
# All rights reserved. This program and the accompanying materials
|
||||
# are licensed and made available under the terms and conditions of the BSD License
|
||||
# which accompanies this distribution. The full text of the license may be found at
|
||||
# http://opensource.org/licenses/bsd-license.php
|
||||
#
|
||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#
|
||||
#**/
|
||||
|
||||
.globl ASM_PFX(CopyMem)
|
||||
|
||||
.globl ASM_PFX(EbcLLCALLEXNative)
|
||||
|
@ -37,18 +39,18 @@ ASM_PFX(EbcLLCALLEXNative):
|
|||
mov %ebp,%esp
|
||||
pop %ebx
|
||||
pop %ebp
|
||||
ret
|
||||
ret
|
||||
|
||||
.globl ASM_PFX(EbcLLGetEbcEntryPoint)
|
||||
ASM_PFX(EbcLLGetEbcEntryPoint):
|
||||
ret
|
||||
ret
|
||||
|
||||
.globl ASM_PFX(EbcLLGetStackPointer)
|
||||
ASM_PFX(EbcLLGetStackPointer):
|
||||
mov %esp,%eax
|
||||
add $0x4,%eax
|
||||
ret
|
||||
ret
|
||||
|
||||
.globl ASM_PFX(EbcLLGetReturnValue)
|
||||
ASM_PFX(EbcLLGetReturnValue):
|
||||
ret
|
||||
ret
|
||||
|
|
|
@ -1,31 +1,20 @@
|
|||
;/** @file
|
||||
; This code provides low level routines that support the Virtual Machine
|
||||
; for option ROMs.
|
||||
;
|
||||
; Copyright (c) 2006 - 2008, Intel Corporation. <BR>
|
||||
; All rights reserved. This program and the accompanying materials
|
||||
; are licensed and made available under the terms and conditions of the BSD License
|
||||
; which accompanies this distribution. The full text of the license may be found at
|
||||
; http://opensource.org/licenses/bsd-license.php
|
||||
;
|
||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
;
|
||||
;**/
|
||||
|
||||
page ,132
|
||||
title VM ASSEMBLY LANGUAGE ROUTINES
|
||||
;****************************************************************************
|
||||
;*
|
||||
;* Copyright (c) 2006 - 2007, Intel Corporation
|
||||
;* All rights reserved. This program and the accompanying materials
|
||||
;* are licensed and made available under the terms and conditions of the BSD License
|
||||
;* which accompanies this distribution. The full text of the license may be found at
|
||||
;* http://opensource.org/licenses/bsd-license.php
|
||||
;*
|
||||
;* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
;* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
;*
|
||||
;****************************************************************************
|
||||
;****************************************************************************
|
||||
; REV 1.0
|
||||
;****************************************************************************
|
||||
;
|
||||
; Rev Date Description
|
||||
; --- -------- ------------------------------------------------------------
|
||||
; 1.0 03/14/01 Initial creation of file.
|
||||
;
|
||||
;****************************************************************************
|
||||
|
||||
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
; This code provides low level routines that support the Virtual Machine
|
||||
; for option ROMs.
|
||||
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
|
||||
;---------------------------------------------------------------------------
|
||||
; Equate files needed.
|
||||
|
@ -40,8 +29,8 @@
|
|||
;---------------------------------------------------------------------------
|
||||
|
||||
.686p
|
||||
.model flat
|
||||
.code
|
||||
.model flat
|
||||
.code
|
||||
;---------------------------------------------------------------------------
|
||||
;;GenericPostSegment SEGMENT USE16
|
||||
;---------------------------------------------------------------------------
|
||||
|
@ -51,9 +40,9 @@ CopyMem PROTO C Destination:PTR DWORD, Source:PTR DWORD, Count:DWORD
|
|||
; EbcLLCALLEXNative
|
||||
;
|
||||
; This function is called to execute an EBC CALLEX instruction
|
||||
; to native code.
|
||||
; to native code.
|
||||
; This instruction requires that we thunk out to external native
|
||||
; code. For IA32, we simply switch stacks and jump to the
|
||||
; code. For IA32, we simply switch stacks and jump to the
|
||||
; specified function. On return, we restore the stack pointer
|
||||
; to its original location.
|
||||
;
|
||||
|
@ -64,17 +53,17 @@ _EbcLLCALLEXNative PROC NEAR PUBLIC
|
|||
push ebp
|
||||
push ebx
|
||||
mov ebp, esp ; standard function prolog
|
||||
|
||||
|
||||
; Get function address in a register
|
||||
; mov ecx, FuncAddr => mov ecx, dword ptr [FuncAddr]
|
||||
mov ecx, dword ptr [esp]+0Ch
|
||||
|
||||
|
||||
; Set stack pointer to new value
|
||||
; mov eax, NewStackPointer => mov eax, dword ptr [NewSp]
|
||||
mov eax, dword ptr [esp] + 14h
|
||||
mov edx, dword ptr [esp] + 10h
|
||||
sub eax, edx
|
||||
sub esp, eax
|
||||
sub esp, eax
|
||||
mov ebx, esp
|
||||
push ecx
|
||||
push eax
|
||||
|
@ -88,7 +77,7 @@ _EbcLLCALLEXNative PROC NEAR PUBLIC
|
|||
|
||||
; Now call the external routine
|
||||
call ecx
|
||||
|
||||
|
||||
; ebp is preserved by the callee. In this function it
|
||||
; equals the original esp, so set them equal
|
||||
mov esp, ebp
|
||||
|
@ -105,7 +94,7 @@ _EbcLLCALLEXNative ENDP
|
|||
; Routine Description:
|
||||
; The VM thunk code stuffs an EBC entry point into a processor
|
||||
; register. Since we can't use inline assembly to get it from
|
||||
; the interpreter C code, stuff it into the return value
|
||||
; the interpreter C code, stuff it into the return value
|
||||
; register and return.
|
||||
;
|
||||
; Arguments:
|
||||
|
@ -121,7 +110,7 @@ _EbcLLGetEbcEntryPoint ENDP
|
|||
;/*++
|
||||
;
|
||||
;Routine Description:
|
||||
;
|
||||
;
|
||||
; Return the caller's value of the stack pointer.
|
||||
;
|
||||
;Arguments:
|
||||
|
@ -136,7 +125,7 @@ _EbcLLGetEbcEntryPoint ENDP
|
|||
;
|
||||
;--*/
|
||||
|
||||
; UINTN EbcLLGetStackPointer()
|
||||
; UINTN EbcLLGetStackPointer()
|
||||
_EbcLLGetStackPointer PROC NEAR PUBLIC
|
||||
mov eax, esp ; get current stack pointer
|
||||
add eax, 4 ; stack adjusted by this much when we were called
|
||||
|
|
|
@ -1,24 +1,19 @@
|
|||
//++
|
||||
// Copyright (c) 2006, Intel Corporation
|
||||
// All rights reserved. This program and the accompanying materials
|
||||
// are licensed and made available under the terms and conditions of the BSD License
|
||||
// which accompanies this distribution. The full text of the license may be found at
|
||||
// http://opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
//
|
||||
// Module Name:
|
||||
//
|
||||
// EbcLowLevel.s
|
||||
//
|
||||
// Abstract:
|
||||
//
|
||||
// Contains low level routines for the Virtual Machine implementation
|
||||
// on an Itanium-based platform.
|
||||
//
|
||||
//
|
||||
//--
|
||||
/// @file
|
||||
/// Contains low level routines for the Virtual Machine implementation
|
||||
/// on an Itanium-based platform.
|
||||
///
|
||||
/// Copyright (c) 2006, Intel Corporation
|
||||
/// All rights reserved. This program and the accompanying materials
|
||||
/// are licensed and made available under the terms and conditions of the BSD License
|
||||
/// which accompanies this distribution. The full text of the license may be found at
|
||||
/// http://opensource.org/licenses/bsd-license.php
|
||||
///
|
||||
/// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
/// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
///
|
||||
/// Module Name: EbcLowLevel.s
|
||||
///
|
||||
///
|
||||
|
||||
.file "EbcLowLevel.s"
|
||||
|
||||
|
@ -40,7 +35,7 @@ name::
|
|||
mov ar##.##pfs=loc1 ;;\
|
||||
br##.##ret##.##dpnt b0;;
|
||||
|
||||
.type CopyMem, @function;
|
||||
.type CopyMem, @function;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//++
|
||||
|
@ -51,16 +46,16 @@ name::
|
|||
// calls the native function. On return it restores the original
|
||||
// stack pointer and returns to the caller.
|
||||
//
|
||||
// Arguments :
|
||||
// Arguments :
|
||||
//
|
||||
// On Entry :
|
||||
// in0 = Address of native code to call
|
||||
// in1 = New stack pointer
|
||||
//
|
||||
// Return Value:
|
||||
//
|
||||
// As per static calling conventions.
|
||||
//
|
||||
// Return Value:
|
||||
//
|
||||
// As per static calling conventions.
|
||||
//
|
||||
//--
|
||||
//---------------------------------------------------------------------------
|
||||
;// void EbcAsmLLCALLEX (UINTN FunctionAddr, UINTN EbcStackPointer)
|
||||
|
@ -75,7 +70,7 @@ PROCEDURE_ENTRY(EbcAsmLLCALLEX)
|
|||
mov r8 = in1;;
|
||||
|
||||
//
|
||||
// Copy stack arguments from EBC stack into registers.
|
||||
// Copy stack arguments from EBC stack into registers.
|
||||
// Assume worst case and copy 8.
|
||||
//
|
||||
ld8 out0 = [r8], 8;;
|
||||
|
@ -98,7 +93,7 @@ PROCEDURE_ENTRY(EbcAsmLLCALLEX)
|
|||
or loc3 = r1, r0
|
||||
|
||||
//
|
||||
// Set the new aligned stack pointer. Reserve space for the required
|
||||
// Set the new aligned stack pointer. Reserve space for the required
|
||||
// 16-bytes of scratch area as well.
|
||||
//
|
||||
add r12 = 48, in1
|
||||
|
@ -129,13 +124,13 @@ PROCEDURE_EXIT(EbcAsmLLCALLEX)
|
|||
|
||||
PROCEDURE_ENTRY(EbcLLCALLEXNative)
|
||||
NESTED_SETUP (3,6,3,0)
|
||||
|
||||
|
||||
mov loc2 = in2;;
|
||||
mov loc3 = in1;;
|
||||
sub loc2 = loc2, loc3
|
||||
mov loc4 = r12;;
|
||||
or loc5 = r1, r0
|
||||
|
||||
|
||||
sub r12 = r12, loc2
|
||||
mov out2 = loc2;;
|
||||
|
||||
|
@ -145,13 +140,13 @@ PROCEDURE_ENTRY(EbcLLCALLEXNative)
|
|||
adds r12 = -0x8, r12
|
||||
(p0) br.call.dptk.many b0 = CopyMem;;
|
||||
adds r12 = 0x8, r12
|
||||
|
||||
|
||||
mov out0 = in0;;
|
||||
mov out1 = r12;;
|
||||
(p0) br.call.dptk.many b0 = EbcAsmLLCALLEX;;
|
||||
mov r12 = loc4;;
|
||||
or r1 = loc5, r0
|
||||
|
||||
|
||||
NESTED_RETURN
|
||||
PROCEDURE_EXIT(EbcLLCALLEXNative)
|
||||
|
||||
|
@ -186,7 +181,7 @@ PROCEDURE_EXIT(EbcLLGetReturnValue)
|
|||
PROCEDURE_ENTRY(EbcLLGetStackPointer)
|
||||
mov r8 = r12 ;;
|
||||
br.ret.sptk b0 ;;
|
||||
br.sptk.few b6
|
||||
br.sptk.few b6
|
||||
PROCEDURE_EXIT(EbcLLGetStackPointer)
|
||||
|
||||
|
||||
|
|
|
@ -1,29 +1,17 @@
|
|||
#****************************************************************************
|
||||
#*
|
||||
#* Copyright (c) 2006, Intel Corporation
|
||||
#* All rights reserved. This program and the accompanying materials
|
||||
#* are licensed and made available under the terms and conditions of the BSD License
|
||||
#* which accompanies this distribution. The full text of the license may be found at
|
||||
#* http://opensource.org/licenses/bsd-license.php
|
||||
#*
|
||||
#* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
#* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#*
|
||||
#****************************************************************************
|
||||
#****************************************************************************
|
||||
# REV 1.0
|
||||
#****************************************************************************
|
||||
#
|
||||
# Rev Date Description
|
||||
# --- -------- ------------------------------------------------------------
|
||||
# 1.0 05/09/12 Initial creation of file.
|
||||
#
|
||||
#****************************************************************************
|
||||
|
||||
#* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
##/**@file
|
||||
# This code provides low level routines that support the Virtual Machine
|
||||
# for option ROMs.
|
||||
#* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
# for option ROMs.
|
||||
#
|
||||
# Copyright (c) 2007 - 2008, Intel Corporation
|
||||
# All rights reserved. This program and the accompanying materials
|
||||
# are licensed and made available under the terms and conditions of the BSD License
|
||||
# which accompanies this distribution. The full text of the license may be found at
|
||||
# http://opensource.org/licenses/bsd-license.php
|
||||
#
|
||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#
|
||||
#**/
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Equate files needed.
|
||||
|
@ -36,10 +24,10 @@
|
|||
#****************************************************************************
|
||||
# EbcLLCALLEX
|
||||
#
|
||||
# This function is called to execute an EBC CALLEX instruction.
|
||||
# This function is called to execute an EBC CALLEX instruction.
|
||||
# This instruction requires that we thunk out to external native
|
||||
# code. For x64, we switch stacks, copy the arguments to the stack
|
||||
# and jump to the specified function.
|
||||
# and jump to the specified function.
|
||||
# On return, we restore the stack pointer to its original location.
|
||||
#
|
||||
# Destroys no working registers.
|
||||
|
@ -62,7 +50,7 @@ _EbcLLCALLEXNative:
|
|||
sub %rsp, %r8
|
||||
mov %rsp, %rcx
|
||||
sub %rsp, 0x20
|
||||
call _CopyMem
|
||||
call _CopyMem
|
||||
add %rsp, 0x20
|
||||
|
||||
# Considering the worst case, load 4 potiential arguments
|
||||
|
@ -86,7 +74,7 @@ _EbcLLCALLEXNative:
|
|||
# Routine Description:
|
||||
# The VM thunk code stuffs an EBC entry point into a processor
|
||||
# register. Since we can't use inline assembly to get it from
|
||||
# the interpreter C code, stuff it into the return value
|
||||
# the interpreter C code, stuff it into the return value
|
||||
# register and return.
|
||||
#
|
||||
# Arguments:
|
||||
|
@ -102,7 +90,7 @@ _EbcLLGetEbcEntryPoint:
|
|||
#/*++
|
||||
#
|
||||
#Routine Description:
|
||||
#
|
||||
#
|
||||
# Return the caller's value of the stack pointer.
|
||||
#
|
||||
#Arguments:
|
||||
|
@ -117,7 +105,7 @@ _EbcLLGetEbcEntryPoint:
|
|||
#
|
||||
#--*/
|
||||
|
||||
# UINTN EbcLLGetStackPointer()
|
||||
# UINTN EbcLLGetStackPointer()
|
||||
.global _EbcLLGetStackPointer;
|
||||
_EbcLLGetStackPointer:
|
||||
mov %rsp, %rax
|
||||
|
|
|
@ -1,31 +1,21 @@
|
|||
;/** @file
|
||||
; This code provides low level routines that support the Virtual Machine.
|
||||
; for option ROMs.
|
||||
;
|
||||
; Copyright (c) 2006 - 2008, Intel Corporation. <BR>
|
||||
; All rights reserved. This program and the accompanying materials
|
||||
; are licensed and made available under the terms and conditions of the BSD License
|
||||
; which accompanies this distribution. The full text of the license may be found at
|
||||
; http://opensource.org/licenses/bsd-license.php
|
||||
;
|
||||
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
;
|
||||
;**/
|
||||
|
||||
|
||||
page ,132
|
||||
title VM ASSEMBLY LANGUAGE ROUTINES
|
||||
;****************************************************************************
|
||||
;*
|
||||
;* Copyright (c) 2006, Intel Corporation
|
||||
;* All rights reserved. This program and the accompanying materials
|
||||
;* are licensed and made available under the terms and conditions of the BSD License
|
||||
;* which accompanies this distribution. The full text of the license may be found at
|
||||
;* http://opensource.org/licenses/bsd-license.php
|
||||
;*
|
||||
;* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
;* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
;*
|
||||
;****************************************************************************
|
||||
;****************************************************************************
|
||||
; REV 1.0
|
||||
;****************************************************************************
|
||||
;
|
||||
; Rev Date Description
|
||||
; --- -------- ------------------------------------------------------------
|
||||
; 1.0 05/09/12 Initial creation of file.
|
||||
;
|
||||
;****************************************************************************
|
||||
|
||||
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
; This code provides low level routines that support the Virtual Machine
|
||||
; for option ROMs.
|
||||
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
|
||||
;---------------------------------------------------------------------------
|
||||
; Equate files needed.
|
||||
|
@ -40,10 +30,10 @@ text SEGMENT
|
|||
;****************************************************************************
|
||||
; EbcLLCALLEX
|
||||
;
|
||||
; This function is called to execute an EBC CALLEX instruction.
|
||||
; This function is called to execute an EBC CALLEX instruction.
|
||||
; This instruction requires that we thunk out to external native
|
||||
; code. For x64, we switch stacks, copy the arguments to the stack
|
||||
; and jump to the specified function.
|
||||
; and jump to the specified function.
|
||||
; On return, we restore the stack pointer to its original location.
|
||||
;
|
||||
; Destroys no working registers.
|
||||
|
@ -58,7 +48,7 @@ EbcLLCALLEXNative PROC PUBLIC
|
|||
push rbx
|
||||
mov rbp, rsp
|
||||
; Function prolog
|
||||
|
||||
|
||||
; Copy FuncAddr to a preserved register.
|
||||
mov rbx, rcx
|
||||
|
||||
|
@ -67,9 +57,9 @@ EbcLLCALLEXNative PROC PUBLIC
|
|||
sub rsp, r8
|
||||
mov rcx, rsp
|
||||
sub rsp, 20h
|
||||
call CopyMem
|
||||
call CopyMem
|
||||
add rsp, 20h
|
||||
|
||||
|
||||
; Considering the worst case, load 4 potiential arguments
|
||||
; into registers.
|
||||
mov rcx, qword ptr [rsp]
|
||||
|
@ -79,7 +69,7 @@ EbcLLCALLEXNative PROC PUBLIC
|
|||
|
||||
; Now call the external routine
|
||||
call rbx
|
||||
|
||||
|
||||
; Function epilog
|
||||
mov rsp, rbp
|
||||
pop rbx
|
||||
|
@ -92,7 +82,7 @@ EbcLLCALLEXNative ENDP
|
|||
; Routine Description:
|
||||
; The VM thunk code stuffs an EBC entry point into a processor
|
||||
; register. Since we can't use inline assembly to get it from
|
||||
; the interpreter C code, stuff it into the return value
|
||||
; the interpreter C code, stuff it into the return value
|
||||
; register and return.
|
||||
;
|
||||
; Arguments:
|
||||
|
@ -108,7 +98,7 @@ EbcLLGetEbcEntryPoint ENDP
|
|||
;/*++
|
||||
;
|
||||
;Routine Description:
|
||||
;
|
||||
;
|
||||
; Return the caller's value of the stack pointer.
|
||||
;
|
||||
;Arguments:
|
||||
|
@ -123,7 +113,7 @@ EbcLLGetEbcEntryPoint ENDP
|
|||
;
|
||||
;--*/
|
||||
|
||||
; UINTN EbcLLGetStackPointer()
|
||||
; UINTN EbcLLGetStackPointer()
|
||||
EbcLLGetStackPointer PROC PUBLIC
|
||||
mov rax, rsp ; get current stack pointer
|
||||
; Stack adjusted by this much when we were called,
|
||||
|
|
Loading…
Reference in New Issue