1. Add the fix for the following Bugs:
i) BMM_FAKE_NV_DATA definition inconsistent in bm.vfr and BootMain.h (EdkNt32Pkg\Dxe\PlatformBdsDxe\Generic\BootMaint\BootMain.h) ii) Change some files’ EOL(end of line) format to DOS. Some file use even mixed style EOL. (EdkModulePkg\Universal\DevicePath\Dxe\DevicePath.c, DevicepathFromText.c, DevicePathUtilities.c; EdkModulePkg\Universal\Disk\DiskIo\Dxe\diskIo.c; MdePkg\Library\UefiLib\UefiNotTiano.c) iii) Change some illegal characters in many files, the problem is mainly connected with people using Chinese Input method to input symbols such as ' " - ?, etc. Multiple files are influenced. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1890 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -73,8 +73,8 @@ EFI_STATUS
|
||||
Inserts an entry to the ARP cache.
|
||||
|
||||
@param This A pointer to the EFI_ARP_PROTOCOL instance.
|
||||
@param DenyFlag Set to TRUE if this entry is a <EFBFBD><EFBFBD>deny<EFBFBD><EFBFBD> entry. Set to FALSE if this
|
||||
entry is a <EFBFBD><EFBFBD>normal<EFBFBD><EFBFBD> entry.
|
||||
@param DenyFlag Set to TRUE if this entry is a "deny" entry. Set to FALSE if this
|
||||
entry is a "normal" entry.
|
||||
@param TargetSwAddress Pointer to a protocol address to add (or deny). May be set to
|
||||
NULL if DenyFlag is TRUE.
|
||||
@param TargetHwAddress Pointer to a hardware address to add (or deny). May be set to
|
||||
|
@@ -161,7 +161,7 @@ EFI_STATUS
|
||||
/**
|
||||
Frees memory structures allocated and returned by other functions in the EFI_BIS protocol.
|
||||
|
||||
@param AppHandle An opaque handle that identifies the caller<EFBFBD><EFBFBD>s instance of initialization
|
||||
@param AppHandle An opaque handle that identifies the caller's instance of initialization
|
||||
of the BIS service.
|
||||
@param ToFree An EFI_BIS_DATA* and associated memory block to be freed.
|
||||
|
||||
@@ -181,10 +181,10 @@ EFI_STATUS
|
||||
);
|
||||
|
||||
/**
|
||||
Shuts down an application<EFBFBD><EFBFBD>s instance of the BIS service, invalidating the application handle. After
|
||||
Shuts down an application's instance of the BIS service, invalidating the application handle. After
|
||||
this call, other BIS functions may no longer be invoked using the application handle value.
|
||||
|
||||
@param AppHandle An opaque handle that identifies the caller<EFBFBD><EFBFBD>s instance of initialization
|
||||
@param AppHandle An opaque handle that identifies the caller's instance of initialization
|
||||
of the BIS service.
|
||||
|
||||
@retval EFI_SUCCESS The function completed successfully.
|
||||
@@ -204,7 +204,7 @@ EFI_STATUS
|
||||
Retrieves the certificate that has been configured as the identity of the organization designated as
|
||||
the source of authorization for signatures of boot objects.
|
||||
|
||||
@param AppHandle An opaque handle that identifies the caller<EFBFBD><EFBFBD>s instance of initialization
|
||||
@param AppHandle An opaque handle that identifies the caller's instance of initialization
|
||||
of the BIS service.
|
||||
@param Certificate The function writes an allocated EFI_BIS_DATA* containing the Boot
|
||||
Object Authorization Certificate object.
|
||||
@@ -229,7 +229,7 @@ EFI_STATUS
|
||||
Verifies the integrity and authorization of the indicated data object according to the
|
||||
indicated credentials.
|
||||
|
||||
@param AppHandle An opaque handle that identifies the caller<EFBFBD><EFBFBD>s instance of initialization
|
||||
@param AppHandle An opaque handle that identifies the caller's instance of initialization
|
||||
of the BIS service.
|
||||
@param Credentials A Signed Manifest containing verification information for the indicated
|
||||
data object.
|
||||
@@ -259,7 +259,7 @@ EFI_STATUS
|
||||
/**
|
||||
Retrieves the current status of the Boot Authorization Check Flag.
|
||||
|
||||
@param AppHandle An opaque handle that identifies the caller<EFBFBD><EFBFBD>s instance of initialization
|
||||
@param AppHandle An opaque handle that identifies the caller's instance of initialization
|
||||
of the BIS service.
|
||||
@param CheckIsRequired The function writes the value TRUE if a Boot Authorization Check is
|
||||
currently required on this platform, otherwise the function writes
|
||||
@@ -284,7 +284,7 @@ EFI_STATUS
|
||||
Retrieves a unique token value to be included in the request credential for the next update of any
|
||||
parameter in the Boot Object Authorization set
|
||||
|
||||
@param AppHandle An opaque handle that identifies the caller<EFBFBD><EFBFBD>s instance of initialization
|
||||
@param AppHandle An opaque handle that identifies the caller's instance of initialization
|
||||
of the BIS service.
|
||||
@param UpdateToken The function writes an allocated EFI_BIS_DATA* containing the new
|
||||
unique update token value.
|
||||
@@ -308,7 +308,7 @@ EFI_STATUS
|
||||
/**
|
||||
Updates one of the configurable parameters of the Boot Object Authorization set.
|
||||
|
||||
@param AppHandle An opaque handle that identifies the caller<EFBFBD><EFBFBD>s instance of initialization
|
||||
@param AppHandle An opaque handle that identifies the caller's instance of initialization
|
||||
of the BIS service.
|
||||
@param RequestCredential This is a Signed Manifest with embedded attributes that carry the details
|
||||
of the requested update.
|
||||
@@ -337,7 +337,7 @@ EFI_STATUS
|
||||
Verifies the integrity and authorization of the indicated data object according to the indicated
|
||||
credentials and authority certificate.
|
||||
|
||||
@param AppHandle An opaque handle that identifies the caller<EFBFBD><EFBFBD>s instance of initialization
|
||||
@param AppHandle An opaque handle that identifies the caller's instance of initialization
|
||||
of the BIS service.
|
||||
@param Credentials A Signed Manifest containing verification information for the
|
||||
indicated data object.
|
||||
@@ -345,7 +345,7 @@ EFI_STATUS
|
||||
@param SectionName An ASCII (not Unicode) string giving the section name in the
|
||||
manifest holding the verification information (in other words,
|
||||
hash value) that corresponds to DataObject.
|
||||
@param AuthorityCertificate A digital certificate whose public key must match the signer<EFBFBD><EFBFBD>s
|
||||
@param AuthorityCertificate A digital certificate whose public key must match the signer's
|
||||
public key which is found in the credentials.
|
||||
@param IsVerified The function writes TRUE if the verification was successful.
|
||||
Otherwise, the function writes FALSE.
|
||||
@@ -377,7 +377,7 @@ EFI_STATUS
|
||||
Retrieves a list of digital certificate identifier, digital signature algorithm, hash algorithm, and keylength
|
||||
combinations that the platform supports.
|
||||
|
||||
@param AppHandle An opaque handle that identifies the caller<EFBFBD><EFBFBD>s instance of initialization
|
||||
@param AppHandle An opaque handle that identifies the caller's instance of initialization
|
||||
of the BIS service.
|
||||
@param SignatureInfo The function writes an allocated EFI_BIS_DATA* containing the array
|
||||
of EFI_BIS_SIGNATURE_INFO structures representing the supported
|
||||
|
@@ -512,7 +512,7 @@ VOID
|
||||
);
|
||||
|
||||
/**
|
||||
Registers and enables the on-target debug agent<EFBFBD><EFBFBD>s periodic entry point.
|
||||
Registers and enables the on-target debug agent's periodic entry point.
|
||||
|
||||
@param SystemContext Exception content.
|
||||
|
||||
@@ -609,9 +609,9 @@ EFI_STATUS
|
||||
causes a fresh memory fetch to retrieve code to be executed.
|
||||
|
||||
@param This A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.
|
||||
@param ProcessorIndex Specifies which processor<EFBFBD><EFBFBD>s instruction cache is to be invalidated.
|
||||
@param ProcessorIndex Specifies which processor's instruction cache is to be invalidated.
|
||||
@param Start Specifies the physical base of the memory range to be invalidated.
|
||||
@param Length Specifies the minimum number of bytes in the processor<EFBFBD><EFBFBD>s instruction
|
||||
@param Length Specifies the minimum number of bytes in the processor's instruction
|
||||
cache to invalidate.
|
||||
|
||||
@retval EFI_SUCCESS The function completed successfully.
|
||||
|
@@ -53,7 +53,7 @@ typedef struct {
|
||||
/**
|
||||
Provides direction to the configuration driver whether to use the HII
|
||||
database or a passed-in set of data. This function also establishes a
|
||||
pointer to the calling driver<EFBFBD><EFBFBD>s callback interface.
|
||||
pointer to the calling driver's callback interface.
|
||||
|
||||
@param This A pointer to the EFI_FORM_BROWSER_PROTOCOL instance.
|
||||
@param UseDatabase Determines whether the HII database is to be
|
||||
@@ -65,7 +65,7 @@ typedef struct {
|
||||
@param HandleCount The number of handles in the array specified by Handle.
|
||||
@param Packet A pointer to a set of data containing pointers to IFR
|
||||
and/or string data.
|
||||
@param CallbackHandle The handle to the driver<EFBFBD><EFBFBD>s callback interface.
|
||||
@param CallbackHandle The handle to the driver's callback interface.
|
||||
This parameter is used only when the UseDatabase parameter is FALSE
|
||||
and an application wants to register a callback with the browser
|
||||
@param NvMapOverride This buffer is used only when there is no NV variable
|
||||
@@ -143,7 +143,7 @@ EFI_STATUS
|
||||
@param SendForm
|
||||
Provides direction to the configuration driver whether to use the HII
|
||||
database or to use a passed-in set of data. This functions also establishes
|
||||
a pointer to the calling driver<EFBFBD><EFBFBD>s callback interface.
|
||||
a pointer to the calling driver's callback interface.
|
||||
|
||||
@param CreatePopUp
|
||||
Routine used to abstract a generic dialog interface and return the
|
||||
|
@@ -90,7 +90,7 @@ typedef struct {
|
||||
|
||||
@param This A pointer to the EFI_FORM_CALLBACK_PROTOCOL instance.
|
||||
@param VariableName A NULL-terminated Unicode string that is the
|
||||
name of the vendor<EFBFBD><EFBFBD>s variable.
|
||||
name of the vendor's variable.
|
||||
@param VendorGuid A unique identifier for the vendor.
|
||||
@param Attributes If not NULL, a pointer to the memory location to
|
||||
return the attribute's bit-mask for the variable.
|
||||
|
@@ -85,7 +85,7 @@ typedef union {
|
||||
|
||||
@param This Points to this instance of EFI_HASH_PROTOCOL.
|
||||
@param HashAlgorithm Points to the EFI_GUID which identifies the algorithm to use.
|
||||
@param HashSize Holds the returned size of the algorithm<EFBFBD><EFBFBD>s hash.
|
||||
@param HashSize Holds the returned size of the algorithm's hash.
|
||||
|
||||
@retval EFI_SUCCESS Hash size returned successfully.
|
||||
@retval EFI_INVALID_PARAMETER HashSize is NULL
|
||||
@@ -117,7 +117,7 @@ EFI_STATUS
|
||||
@retval EFI_SUCCESS Hash returned successfully.
|
||||
@retval EFI_INVALID_PARAMETER Message or Hash is NULL
|
||||
@retval EFI_UNSUPPORTED The algorithm specified by HashAlgorithm is not supported by this
|
||||
driver. Or extend is TRUE and the algorithm doesn<EFBFBD><EFBFBD>t support extending the hash.
|
||||
driver. Or extend is TRUE and the algorithm doesn't support extending the hash.
|
||||
|
||||
**/
|
||||
typedef
|
||||
|
@@ -526,7 +526,7 @@ EFI_STATUS
|
||||
terminator of the string.
|
||||
@param GlyphBufferSize A pointer to a value. On output, if the function
|
||||
returns EFI_SUCCESS, it contains the amount of memory that is required to
|
||||
store the string<EFBFBD><EFBFBD>s glyph equivalent.
|
||||
store the string's glyph equivalent.
|
||||
|
||||
@retval EFI_SUCCESS All glyphs are available. Note that an empty string
|
||||
always returns this value.
|
||||
|
@@ -311,7 +311,7 @@ EFI_STATUS
|
||||
@param This Pointer to the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.
|
||||
@param Channel Zero-based channel number.
|
||||
@param Device Zero-based device number on the Channel.
|
||||
@param IdentifyData The device<EFBFBD><EFBFBD>s response to the ATA IDENTIFY_DEVICE command.
|
||||
@param IdentifyData The device's response to the ATA IDENTIFY_DEVICE command.
|
||||
|
||||
@retval EFI_SUCCESS The information was accepted without any errors.
|
||||
@retval EFI_INVALID_PARAMETER Channel is invalid (Channel >= ChannelCount).
|
||||
|
@@ -168,7 +168,7 @@ EFI_STATUS
|
||||
@param DeviceHandle List of PCI devices in the system.
|
||||
@param ShadowAddress First free OpROM area, after other OpROMs have been dispatched.
|
||||
@param Compatibility16Table Pointer to Compatibility16Table.
|
||||
@param AdditionalData Mode specific Pointer to additional data returned <EFBFBD>C mode specific.
|
||||
@param AdditionalData Mode specific Pointer to additional data returned - mode specific.
|
||||
|
||||
@retval EFI_SUCCESS RomImage is valid
|
||||
@retval EFI_UNSUPPORTED Mode is not supported on the platform.
|
||||
|
@@ -111,7 +111,7 @@ EFI_STATUS
|
||||
|
||||
/**
|
||||
@par Protocol Description:
|
||||
Abstracts the hardware control of the physical address region 0xC0000<EFBFBD>C0xFFFFF
|
||||
Abstracts the hardware control of the physical address region 0xC0000-C0xFFFFF
|
||||
for the traditional BIOS.
|
||||
|
||||
@param Decode
|
||||
|
@@ -291,7 +291,7 @@ EFI_STATUS
|
||||
the default parameters that were set in the
|
||||
EFI_MTFTP4_PROTOCOL.Configure() function are used.
|
||||
@param Filename Pointer to ASCIIZ file name string.
|
||||
@param ModeStr Pointer to ASCIIZ mode string. If NULL, <EFBFBD><EFBFBD>octet<EFBFBD><EFBFBD> will be used.
|
||||
@param ModeStr Pointer to ASCIIZ mode string. If NULL, "octet" will be used.
|
||||
@param OptionCount Number of option/value string pairs in OptionList.
|
||||
@param OptionList Pointer to array of option/value string pairs. Ignored if
|
||||
OptionCount is zero.
|
||||
@@ -422,7 +422,7 @@ EFI_STATUS
|
||||
|
||||
|
||||
/**
|
||||
Downloads a data file <EFBFBD><EFBFBD>directory<EFBFBD><EFBFBD> from an MTFTPv4 server. May be unsupported in some EFI
|
||||
Downloads a data file "directory" from an MTFTPv4 server. May be unsupported in some EFI
|
||||
implementations.
|
||||
|
||||
@param This Pointer to the EFI_MTFTP4_PROTOCOL instance.
|
||||
|
@@ -765,7 +765,7 @@ EFI_STATUS
|
||||
@param[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in,out] TokenNumber A pointer to the PCD token number to use to find the subsequent token number.
|
||||
If the input token namespace or token number does not exist on the platform,
|
||||
an error is returned and the value of *TokenNumber is undefined. To retrieve the <EFBFBD><EFBFBD>first<EFBFBD><EFBFBD> token,
|
||||
an error is returned and the value of *TokenNumber is undefined. To retrieve the "first" token,
|
||||
have the pointer reference a TokenNumber value of 0. If the input token number is 0 and
|
||||
there is no valid token number for this token namespace, *TokenNumber will be assigned to
|
||||
0 and the function return EFI_SUCCESS. If the token number is the last valid token number,
|
||||
|
@@ -245,7 +245,7 @@ EFI_STATUS
|
||||
);
|
||||
|
||||
/**
|
||||
Provides the PCI controller<EFBFBD>Cspecific addresses needed to access system memory.
|
||||
Provides the PCI controller-Cspecific addresses needed to access system memory.
|
||||
|
||||
@param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
|
||||
@param Operation Indicates if the bus master is going to read or write to system memory.
|
||||
@@ -360,13 +360,13 @@ EFI_STATUS
|
||||
);
|
||||
|
||||
/**
|
||||
Retrieves this PCI controller<EFBFBD><EFBFBD>s current PCI bus number, device number, and function number.
|
||||
Retrieves this PCI controller's current PCI bus number, device number, and function number.
|
||||
|
||||
@param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
|
||||
@param SegmentNumber The PCI controller<EFBFBD><EFBFBD>s current PCI segment number.
|
||||
@param BusNumber The PCI controller<EFBFBD><EFBFBD>s current PCI bus number.
|
||||
@param DeviceNumber The PCI controller<EFBFBD><EFBFBD>s current PCI device number.
|
||||
@param FunctionNumber The PCI controller<EFBFBD><EFBFBD>s current PCI function number.
|
||||
@param SegmentNumber The PCI controller's current PCI segment number.
|
||||
@param BusNumber The PCI controller's current PCI bus number.
|
||||
@param DeviceNumber The PCI controller's current PCI device number.
|
||||
@param FunctionNumber The PCI controller's current PCI function number.
|
||||
|
||||
@retval EFI_SUCCESS The PCI controller location was returned.
|
||||
@retval EFI_INVALID_PARAMETER One or more parameters are invalid.
|
||||
|
@@ -191,7 +191,7 @@ EFI_STATUS
|
||||
Retrieves the platform policy regarding enumeration.
|
||||
|
||||
@param GetPciRom
|
||||
Gets the PCI device<EFBFBD><EFBFBD>s option ROM from a platform-specific location.
|
||||
Gets the PCI device's option ROM from a platform-specific location.
|
||||
|
||||
**/
|
||||
struct _EFI_PCI_PLATFORM_PROTOCOL {
|
||||
|
@@ -167,7 +167,7 @@ EFI_STATUS
|
||||
);
|
||||
|
||||
/**
|
||||
Provides the PCI controller<EFBFBD>Cspecific addresses required to access system memory from a
|
||||
Provides the PCI controller-Cspecific addresses required to access system memory from a
|
||||
DMA bus master.
|
||||
|
||||
@param This A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.
|
||||
|
@@ -506,9 +506,9 @@ EFI_STATUS
|
||||
@param NewSendGUID If not NULL, a pointer to a value that specifies whether to replace the
|
||||
current value of SendGUID.
|
||||
@param NewTTL If not NULL, a pointer to be used in place of the current value of TTL,
|
||||
the <EFBFBD><EFBFBD>time to live<EFBFBD><EFBFBD> field of the IP header.
|
||||
the "time to live" field of the IP header.
|
||||
@param NewToS If not NULL, a pointer to be used in place of the current value of ToS,
|
||||
the <EFBFBD><EFBFBD>type of service<EFBFBD><EFBFBD> field of the IP header.
|
||||
the "type of service" field of the IP header.
|
||||
@param NewMakeCallback If not NULL, a pointer to a value that specifies whether to replace the
|
||||
current value of the MakeCallback field of the Mode structure.
|
||||
|
||||
|
@@ -61,7 +61,7 @@ typedef struct {
|
||||
Dispatch function for a Sx state SMI handler.
|
||||
|
||||
@param DispatchHandle Handle of this dispatch function.
|
||||
@param DispatchContext Pointer to the dispatch function<EFBFBD><EFBFBD>s context.
|
||||
@param DispatchContext Pointer to the dispatch function's context.
|
||||
The Type and Phase fields are filled in by the Sx dispatch driver
|
||||
prior to invoking this dispatch function. For this interface,
|
||||
the Sx driver will call the dispatch function for all Sx type
|
||||
|
@@ -67,7 +67,7 @@ typedef struct {
|
||||
@retval EFI_INVALID_PARAMETER A NULL Buffer was specified with a non-zero
|
||||
BufferSize or the device is operating in fixed block
|
||||
size mode and the BufferSize was not a multiple of
|
||||
device<EFBFBD><EFBFBD>s fixed block size
|
||||
device's fixed block size
|
||||
@retval EFI_DEVICE_ERROR A device error occurred while attempting to transfer data
|
||||
from the media.
|
||||
|
||||
@@ -104,7 +104,7 @@ EFI_STATUS
|
||||
@retval EFI_INVALID_PARAMETER A NULL Buffer was specified with a non-zero
|
||||
BufferSize or the device is operating in fixed block
|
||||
size mode and the BufferSize was not a multiple of
|
||||
device<EFBFBD><EFBFBD>s fixed block size
|
||||
device's fixed block size
|
||||
@retval EFI_DEVICE_ERROR A device error occurred while attempting to transfer data
|
||||
from the media.
|
||||
|
||||
|
@@ -171,7 +171,7 @@ typedef struct {
|
||||
|
||||
@retval EFI_SUCCESS The mode data was read.
|
||||
@retval EFI_INVALID_PARAMETER This is NULL.
|
||||
@retval EFI_NOT_STARTED No configuration data is available because this instance hasn<EFBFBD><EFBFBD>t
|
||||
@retval EFI_NOT_STARTED No configuration data is available because this instance hasn't
|
||||
been started.
|
||||
|
||||
**/
|
||||
@@ -278,7 +278,7 @@ EFI_STATUS
|
||||
- This is NULL.
|
||||
- ConnectionToken is NULL.
|
||||
- ConnectionToken->CompletionToken.Event is NULL.
|
||||
@retval EFI_OUT_OF_RESOURCES The driver can<EFBFBD><EFBFBD>t allocate enough resource to initiate the activeopen.
|
||||
@retval EFI_OUT_OF_RESOURCES The driver can't allocate enough resource to initiate the activeopen.
|
||||
@retval EFI_DEVICE_ERROR An unexpected system or network error occurred.
|
||||
|
||||
**/
|
||||
|
@@ -101,7 +101,7 @@ EFI_STATUS
|
||||
@retval EFI_SUCCESS The state information of the host controller was returned in State.
|
||||
@retval EFI_INVALID_PARAMETER State is NULL.
|
||||
@retval EFI_DEVICE_ERROR An error was encountered while attempting to retrieve the
|
||||
host controller<EFBFBD><EFBFBD>s current state.
|
||||
host controller's current state.
|
||||
|
||||
**/
|
||||
typedef
|
||||
|
@@ -60,7 +60,7 @@ EFI_STATUS
|
||||
|
||||
@retval EFI_SUCCESS The state information of the host controller was returned in State.
|
||||
@retval EFI_INVALID_PARAMETER State is NULL.
|
||||
@retval EFI_DEVICE_ERROR An error was encountered while attempting to retrieve the host controller<EFBFBD><EFBFBD>s
|
||||
@retval EFI_DEVICE_ERROR An error was encountered while attempting to retrieve the host controller's
|
||||
current state.
|
||||
|
||||
**/
|
||||
|
@@ -123,7 +123,7 @@ EFI_STATUS
|
||||
|
||||
/**
|
||||
This function is used to manage a USB device with an interrupt transfer pipe. An Asynchronous
|
||||
Interrupt Transfer is typically used to query a device<EFBFBD><EFBFBD>s status at a fixed rate. For example,
|
||||
Interrupt Transfer is typically used to query a device's status at a fixed rate. For example,
|
||||
keyboard, mouse, and hub devices use this type of transfer to query their interrupt endpoints at
|
||||
a fixed rate.
|
||||
|
||||
@@ -131,7 +131,7 @@ EFI_STATUS
|
||||
@param DeviceEndpoint A pointer to the USB device request that will be sent to the USB
|
||||
device.
|
||||
@param IsNewTransfer If TRUE, a new transfer will be submitted to USB controller. If
|
||||
FALSE, the interrupt transfer is deleted from the device<EFBFBD><EFBFBD>s interrupt
|
||||
FALSE, the interrupt transfer is deleted from the device's interrupt
|
||||
transfer queue.
|
||||
@param PollingInterval Indicates the periodic rate, in milliseconds, that the transfer is to be
|
||||
executed.
|
||||
|
Reference in New Issue
Block a user