1, Move device path utility macros from protocol's header file to DevicePathLib library classes

2, Remove Unpack type

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6455 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
klu2
2008-11-11 15:39:02 +00:00
parent 96e1079fa4
commit e5dab01618
6 changed files with 37 additions and 63 deletions

View File

@@ -15,6 +15,24 @@
#ifndef __DEVICE_PATH_LIB_H__
#define __DEVICE_PATH_LIB_H__
#include <Library/BaseLib.h>
#define END_DEVICE_PATH_LENGTH (sizeof (EFI_DEVICE_PATH_PROTOCOL))
#define DevicePathNodeLength(Node) ReadUnaligned16 ((UINT16 *)&((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Length[0])
#define NextDevicePathNode(Node) ((EFI_DEVICE_PATH_PROTOCOL *)((UINT8 *)(Node) + DevicePathNodeLength(Node)))
#define DevicePathType(Node) (((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Type)
#define DevicePathSubType(Node) (((EFI_DEVICE_PATH_PROTOCOL *)(Node))->SubType)
#define IsDevicePathEndType(Node) (DevicePathType (Node) == END_DEVICE_PATH_TYPE)
#define IsDevicePathEnd(Node) (IsDevicePathEndType (Node) && DevicePathSubType(Node) == END_ENTIRE_DEVICE_PATH_SUBTYPE)
#define IsDevicePathEndInstance(Node) (IsDevicePathEndType (Node) && DevicePathSubType(Node) == END_INSTANCE_DEVICE_PATH_SUBTYPE)
#define SetDevicePathNodeLength(Node,NodeLength) WriteUnaligned16 ((UINT16 *)&((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Length[0], (UINT16)(NodeLength))
#define SetDevicePathEndNode(Node) { \
DevicePathType (Node) = END_DEVICE_PATH_TYPE; \
DevicePathSubType (Node) = END_ENTIRE_DEVICE_PATH_SUBTYPE; \
SetDevicePathNodeLength ((Node), END_DEVICE_PATH_LENGTH); \
}
/**
Returns the size of a device path in bytes.