xref: /freebsd/sys/contrib/edk2/Include/Protocol/VariableWrite.h (revision f439973d6726c3be929c8fb3b1545b8b1744abc3)
1*f439973dSWarner Losh /** @file
2*f439973dSWarner Losh   Variable Write Architectural Protocol as defined in PI Specification VOLUME 2 DXE
3*f439973dSWarner Losh 
4*f439973dSWarner Losh   This provides the services required to set nonvolatile environment variables.
5*f439973dSWarner Losh   This protocol must be produced by a runtime DXE driver and may be consumed only
6*f439973dSWarner Losh   by the DXE Foundation.
7*f439973dSWarner Losh 
8*f439973dSWarner Losh   The DXE driver that produces this protocol must be a runtime driver. This driver
9*f439973dSWarner Losh   may update the SetVariable() field of the UEFI Runtime Services Table.
10*f439973dSWarner Losh 
11*f439973dSWarner Losh   After the UEFI Runtime Services Table has been initialized, the driver must
12*f439973dSWarner Losh   install the EFI_VARIABLE_WRITE_ARCH_PROTOCOL_GUID on a new handle with a NULL
13*f439973dSWarner Losh   interface pointer. The installation of this protocol informs the DXE Foundation
14*f439973dSWarner Losh   that the write services for nonvolatile environment variables are now available
15*f439973dSWarner Losh   and that the DXE Foundation must update the 32-bit CRC of the UEFI Runtime Services
16*f439973dSWarner Losh   Table. The full complement of environment variable services are not available
17*f439973dSWarner Losh   until both this protocol and EFI_VARIABLE_ARCH_PROTOCOL are installed. DXE drivers
18*f439973dSWarner Losh   that require read-only access or read/write access to volatile environment variables
19*f439973dSWarner Losh   must have the EFI_VARIABLE_WRITE_ARCH_PROTOCOL in their dependency expressions.
20*f439973dSWarner Losh   DXE drivers that require write access to nonvolatile environment variables must
21*f439973dSWarner Losh   have this architectural protocol in their dependency expressions.
22*f439973dSWarner Losh 
23*f439973dSWarner Losh   Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
24*f439973dSWarner Losh   SPDX-License-Identifier: BSD-2-Clause-Patent
25*f439973dSWarner Losh 
26*f439973dSWarner Losh **/
27*f439973dSWarner Losh 
28*f439973dSWarner Losh #ifndef __ARCH_PROTOCOL_VARIABLE_WRITE_ARCH_H__
29*f439973dSWarner Losh #define __ARCH_PROTOCOL_VARIABLE_WRITE_ARCH_H__
30*f439973dSWarner Losh 
31*f439973dSWarner Losh ///
32*f439973dSWarner Losh /// Global ID for the Variable Write Architectural Protocol
33*f439973dSWarner Losh ///
34*f439973dSWarner Losh #define EFI_VARIABLE_WRITE_ARCH_PROTOCOL_GUID \
35*f439973dSWarner Losh   { 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53 } }
36*f439973dSWarner Losh 
37*f439973dSWarner Losh extern EFI_GUID  gEfiVariableWriteArchProtocolGuid;
38*f439973dSWarner Losh 
39*f439973dSWarner Losh #endif
40