49 size_t new_strings_len;
52 unsigned int string_id;
68 if ( ! new_strings ) {
72 ucs2 = ( ( (
void * ) new_strings ) + ifr->
strings_len );
85 DBGC ( ifr,
"IFR %p string %#04x is \"%ls\"\n",
115 op = ( ( (
void * ) new_ops ) + ifr->
ops_len );
133 size_t dispaddr = ifr->
ops_len;
139 DBGC ( ifr,
"IFR %p end\n", ifr );
149 size_t dispaddr = ifr->
ops_len;
155 DBGC ( ifr,
"IFR %p false\n", ifr );
156 DBGC2_HDA ( ifr, dispaddr,
false,
sizeof ( *
false ) );
167 unsigned int title_id ) {
168 size_t dispaddr = ifr->
ops_len;
175 form->Header.Scope = 1;
177 form->FormTitle = title_id;
179 DBGC ( ifr,
"IFR %p name/value store %#04x title %#04x\n",
180 ifr,
form->FormId, title_id );
195 unsigned int title_id,
unsigned int help_id, ... ) {
196 size_t dispaddr = ifr->
ops_len;
199 unsigned int num_class_guids = 0;
210 len = (
sizeof ( *formset ) +
211 ( num_class_guids *
sizeof ( *class_guid ) ) );
218 formset->
Help = help_id;
219 formset->
Flags = num_class_guids;
222 class_guid = ( ( (
void * ) formset ) +
sizeof ( *formset ) );
224 while ( num_class_guids-- ) {
226 sizeof ( *class_guid ) );
230 DBGC ( ifr,
"IFR %p formset title %#04x help %#04x\n",
231 ifr, title_id, help_id );
244 unsigned int varstore_info,
unsigned int varstore_type ) {
245 size_t dispaddr = ifr->
ops_len;
254 DBGC ( ifr,
"IFR %p get varstore %#04x:%#04x type %#02x\n",
255 ifr, varstore_id, varstore_info, varstore_type );
256 DBGC2_HDA ( ifr, dispaddr, get,
sizeof ( *get ) );
266 size_t dispaddr = ifr->
ops_len;
271 sizeof ( *guid_class ) );
276 guid_class->
Class =
class;
278 DBGC ( ifr,
"IFR %p GUID class %#02x\n", ifr,
class );
279 DBGC2_HDA ( ifr, dispaddr, guid_class,
sizeof ( *guid_class ) );
289 unsigned int subclass ) {
290 size_t dispaddr = ifr->
ops_len;
295 sizeof ( *guid_subclass ) );
296 if ( ! guid_subclass )
299 sizeof ( guid_subclass->
Guid ) );
303 DBGC ( ifr,
"IFR %p GUID subclass %#02x\n", ifr, subclass );
304 DBGC2_HDA ( ifr, dispaddr, guid_subclass,
sizeof ( *guid_subclass ) );
323 unsigned int help_id,
unsigned int question_id,
324 unsigned int varstore_id,
unsigned int varstore_info,
325 unsigned int vflags,
unsigned long min_value,
326 unsigned long max_value,
unsigned int step,
327 unsigned int flags ) {
328 size_t dispaddr = ifr->
ops_len;
366 DBGC ( ifr,
"IFR %p numeric prompt %#04x help %#04x question %#04x " 367 "varstore %#04x:%#04x\n", ifr, prompt_id, help_id, question_id,
368 varstore_id, varstore_info );
369 DBGC2_HDA ( ifr, dispaddr, numeric,
sizeof ( *numeric ) );
387 unsigned int help_id,
unsigned int question_id,
388 unsigned int varstore_id,
unsigned int varstore_info,
389 unsigned int vflags,
unsigned int min_size,
390 unsigned int max_size,
unsigned int flags ) {
391 size_t dispaddr = ifr->
ops_len;
398 string->Question.Header.Prompt = prompt_id;
399 string->Question.Header.Help = help_id;
400 string->Question.QuestionId = question_id;
401 string->Question.VarStoreId = varstore_id;
402 string->Question.VarStoreInfo.VarName = varstore_info;
403 string->Question.Flags = vflags;
404 string->MinSize = min_size;
405 string->MaxSize = max_size;
406 string->Flags =
flags;
408 DBGC ( ifr,
"IFR %p string prompt %#04x help %#04x question %#04x " 409 "varstore %#04x:%#04x\n", ifr, prompt_id, help_id, question_id,
410 varstore_id, varstore_info );
411 DBGC2_HDA ( ifr, dispaddr,
string,
sizeof ( *
string ) );
420 size_t dispaddr = ifr->
ops_len;
425 sizeof ( *suppress_if ) );
428 DBGC ( ifr,
"IFR %p suppress-if\n", ifr );
429 DBGC2_HDA ( ifr, dispaddr, suppress_if,
sizeof ( *suppress_if ) );
441 unsigned int help_id,
unsigned int text_id ) {
442 size_t dispaddr = ifr->
ops_len;
453 DBGC ( ifr,
"IFR %p text prompt %#04x help %#04x text %#04x\n",
454 ifr, prompt_id, help_id, text_id );
455 DBGC2_HDA ( ifr, dispaddr, text,
sizeof ( *text ) );
464 size_t dispaddr = ifr->
ops_len;
470 DBGC ( ifr,
"IFR %p true\n", ifr );
471 DBGC2_HDA ( ifr, dispaddr,
true,
sizeof ( *
true ) );
483 size_t dispaddr = ifr->
ops_len;
488 sizeof ( *varstore ) );
494 DBGC ( ifr,
"IFR %p name/value store %#04x\n",
496 DBGC2_HDA ( ifr, dispaddr, varstore,
sizeof ( *varstore ) );
509 memset ( ifr, 0,
sizeof ( *ifr ) );
527 const char *language,
528 unsigned int language_id ) {
540 strlen ( language ) + 1 ];
553 package = zalloc ( sizeof ( *package ) );
558 package->header.PackageLength =
sizeof ( *package );
559 memcpy ( &package->header.PackageListGuid,
guid,
560 sizeof ( package->header.PackageListGuid ) );
561 package->ops.header.Length =
sizeof ( package->ops );
563 memcpy ( package->ops.data, ifr->
ops, sizeof ( package->ops.data ) );
564 package->strings.header.header.Header.Length =
565 sizeof ( package->strings );
566 package->strings.header.header.Header.Type =
568 package->strings.header.header.HdrSize =
569 sizeof ( package->strings.header );
570 package->strings.header.header.StringInfoOffset =
571 sizeof ( package->strings.header );
572 package->strings.header.header.LanguageName = language_id;
573 strcpy ( package->strings.header.header.Language, language );
575 sizeof ( package->strings.data ) );
578 package->end.Length =
sizeof ( package->end );
580 return &package->header;
EFI human interface infrastructure.
UINT16 SubClass
Sub Class type from the above.
void efi_ifr_true_op(struct efi_ifr_builder *ifr)
Add true opcode to IFR builder.
void efi_ifr_form_set_op(struct efi_ifr_builder *ifr, const EFI_GUID *guid, unsigned int title_id, unsigned int help_id,...)
Add formset opcode to IFR builder.
userptr_t data
Raw file image.
void efi_ifr_end_op(struct efi_ifr_builder *ifr)
Add end opcode to IFR builder.
union _EFI_IFR_GET::@591 VarStoreInfo
static const EFI_GUID tiano_guid
Tiano GUID.
unsigned int efi_ifr_varstore_name_value_op(struct efi_ifr_builder *ifr, const EFI_GUID *guid)
Add name/value store opcode to IFR builder.
128 bit buffer containing a unique identifier value.
int efi_vsnprintf(wchar_t *wbuf, size_t wsize, const char *fmt, va_list args)
Write a formatted string to a wide-character buffer.
EFI_HII_STRING_BLOCK Header
UINT8 ExtendOpCode
EFI_IFR_EXTEND_OP_SUBCLASS.
uint8_t size
Entry size (in 32-bit words)
UINT16 Class
Device Class from the above.
EFI_STRING_ID VarName
A 16-bit Buffer Storage offset.
void efi_ifr_suppress_if_op(struct efi_ifr_builder *ifr)
Add suppress-if opcode to IFR builder.
UINT8 ExtendOpCode
EFI_IFR_EXTEND_OP_CLASS.
#define offsetof(type, field)
Get offset of a field within a structure.
EFI_GUID Guid
EFI_IFR_TIANO_GUID.
EFI_HII_PACKAGE_LIST_HEADER * efi_ifr_package(struct efi_ifr_builder *ifr, const EFI_GUID *guid, const char *language, unsigned int language_id)
Construct package list from IFR builder.
void efi_ifr_false_op(struct efi_ifr_builder *ifr)
Add false opcode to IFR builder.
EFI_HII_STRING_BLOCK * strings
Strings.
static void * efi_ifr_op(struct efi_ifr_builder *ifr, unsigned int opcode, size_t len)
Add IFR opcode to IFR builder.
void efi_ifr_string_op(struct efi_ifr_builder *ifr, unsigned int prompt_id, unsigned int help_id, unsigned int question_id, unsigned int varstore_id, unsigned int varstore_info, unsigned int vflags, unsigned int min_size, unsigned int max_size, unsigned int flags)
Add string opcode to IFR builder.
struct MINMAXSTEP_DATA::@586 u8
void * memcpy(void *dest, const void *src, size_t len) __nonnull
#define EFI_IFR_EXTEND_OP_SUBCLASS
EFI_IFR_QUESTION_HEADER Question
void efi_ifr_guid_subclass_op(struct efi_ifr_builder *ifr, unsigned int subclass)
Add GUID subclass opcode to IFR builder.
struct MINMAXSTEP_DATA::@587 u16
char * strcpy(char *dest, const char *src)
Copy string.
void efi_ifr_text_op(struct efi_ifr_builder *ifr, unsigned int prompt_id, unsigned int help_id, unsigned int text_id)
Add text opcode to IFR builder.
void efi_ifr_get_op(struct efi_ifr_builder *ifr, unsigned int varstore_id, unsigned int varstore_info, unsigned int varstore_type)
Add get opcode to IFR builder.
struct MINMAXSTEP_DATA::@589 u64
unsigned int efi_ifr_form_op(struct efi_ifr_builder *ifr, unsigned int title_id)
Add form opcode to IFR builder.
The fixed header consists of a standard record header and then the string identifiers contained in th...
EFI_VARSTORE_ID VarStoreId
unsigned int varstore_id
Current variable store identifier.
unsigned int string_id
Current string identifier.
size_t strings_len
Length of strings.
static void(* free)(struct refcnt *refcnt))
EFI_IFR_STATEMENT_HEADER Statement
size_t ops_len
Length of IFR opcodes.
size_t strlen(const char *src)
Get length of string.
int failed
An allocation has failed.
#define EFI_IFR_EXTEND_OP_CLASS
EFI_IFR_OP_HEADER * ops
IFR opcodes.
#define EFI_IFR_TIANO_GUID
GUIDed opcodes defined for EDKII implementation.
void efi_ifr_free(struct efi_ifr_builder *ifr)
Free memory used by IFR builder.
void efi_ifr_guid_class_op(struct efi_ifr_builder *ifr, unsigned int class)
Add GUID class opcode to IFR builder.
struct MINMAXSTEP_DATA::@588 u32
static uint16_t struct vmbus_xfer_pages_operations * op
__builtin_va_list va_list
UINT8 VarStoreType
Specifies the type used for storage.
unsigned int efi_ifr_string(struct efi_ifr_builder *ifr, const char *fmt,...)
Add string to IFR builder.
void step(void)
Single-step a single process.
struct ena_aq_header header
Header.
unsigned int form_id
Current form identifier.
uint32_t end
Ending offset.
int ssize_t const char * fmt
void * realloc(void *old_ptr, size_t new_size)
Reallocate memory.
typeof(acpi_finder=acpi_find)
ACPI table finder.
#define va_start(ap, last)
void efi_ifr_numeric_op(struct efi_ifr_builder *ifr, unsigned int prompt_id, unsigned int help_id, unsigned int question_id, unsigned int varstore_id, unsigned int varstore_info, unsigned int vflags, unsigned long min_value, unsigned long max_value, unsigned int step, unsigned int flags)
Add numeric opcode to IFR builder.
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
EFI_VARSTORE_ID VarStoreId
Specifies the identifier of a previously declared variable store to use when retrieving the value.
#define NULL
NULL pointer (VOID *)
EFI_GUID Guid
EFI_IFR_TIANO_GUID.
void * memset(void *dest, int character, size_t len) __nonnull