50 size_t new_strings_len;
53 unsigned int string_id;
69 if ( ! new_strings ) {
73 ucs2 = ( ( (
void * ) new_strings ) + ifr->
strings_len );
86 DBGC ( ifr,
"IFR %p string %#04x is \"%ls\"\n",
116 op = ( ( (
void * ) new_ops ) + ifr->
ops_len );
134 size_t dispaddr = ifr->
ops_len;
140 DBGC ( ifr,
"IFR %p end\n", ifr );
150 size_t dispaddr = ifr->
ops_len;
156 DBGC ( ifr,
"IFR %p false\n", ifr );
168 unsigned int title_id ) {
169 size_t dispaddr = ifr->
ops_len;
176 form->Header.Scope = 1;
178 form->FormTitle = title_id;
180 DBGC ( ifr,
"IFR %p name/value store %#04x title %#04x\n",
181 ifr,
form->FormId, title_id );
196 unsigned int title_id,
unsigned int help_id, ... ) {
197 size_t dispaddr = ifr->
ops_len;
200 unsigned int num_class_guids = 0;
211 len = (
sizeof ( *formset ) +
212 ( num_class_guids *
sizeof ( *class_guid ) ) );
219 formset->
Help = help_id;
220 formset->
Flags = num_class_guids;
223 class_guid = ( ( (
void * ) formset ) +
sizeof ( *formset ) );
225 while ( num_class_guids-- ) {
227 sizeof ( *class_guid ) );
231 DBGC ( ifr,
"IFR %p formset title %#04x help %#04x\n",
232 ifr, title_id, help_id );
245 unsigned int varstore_info,
unsigned int varstore_type ) {
246 size_t dispaddr = ifr->
ops_len;
255 DBGC ( ifr,
"IFR %p get varstore %#04x:%#04x type %#02x\n",
256 ifr, varstore_id, varstore_info, varstore_type );
257 DBGC2_HDA ( ifr, dispaddr, get,
sizeof ( *get ) );
267 size_t dispaddr = ifr->
ops_len;
272 sizeof ( *guid_class ) );
277 guid_class->
Class =
class;
279 DBGC ( ifr,
"IFR %p GUID class %#02x\n", ifr,
class );
280 DBGC2_HDA ( ifr, dispaddr, guid_class,
sizeof ( *guid_class ) );
290 unsigned int subclass ) {
291 size_t dispaddr = ifr->
ops_len;
296 sizeof ( *guid_subclass ) );
297 if ( ! guid_subclass )
300 sizeof ( guid_subclass->
Guid ) );
304 DBGC ( ifr,
"IFR %p GUID subclass %#02x\n", ifr, subclass );
305 DBGC2_HDA ( ifr, dispaddr, guid_subclass,
sizeof ( *guid_subclass ) );
324 unsigned int help_id,
unsigned int question_id,
325 unsigned int varstore_id,
unsigned int varstore_info,
326 unsigned int vflags,
unsigned long min_value,
327 unsigned long max_value,
unsigned int step,
328 unsigned int flags ) {
329 size_t dispaddr = ifr->
ops_len;
367 DBGC ( ifr,
"IFR %p numeric prompt %#04x help %#04x question %#04x " 368 "varstore %#04x:%#04x\n", ifr, prompt_id, help_id, question_id,
369 varstore_id, varstore_info );
370 DBGC2_HDA ( ifr, dispaddr, numeric,
sizeof ( *numeric ) );
388 unsigned int help_id,
unsigned int question_id,
389 unsigned int varstore_id,
unsigned int varstore_info,
390 unsigned int vflags,
unsigned int min_size,
391 unsigned int max_size,
unsigned int flags ) {
392 size_t dispaddr = ifr->
ops_len;
399 string->Question.Header.Prompt = prompt_id;
400 string->Question.Header.Help = help_id;
401 string->Question.QuestionId = question_id;
402 string->Question.VarStoreId = varstore_id;
403 string->Question.VarStoreInfo.VarName = varstore_info;
404 string->Question.Flags = vflags;
405 string->MinSize = min_size;
406 string->MaxSize = max_size;
407 string->Flags =
flags;
409 DBGC ( ifr,
"IFR %p string prompt %#04x help %#04x question %#04x " 410 "varstore %#04x:%#04x\n", ifr, prompt_id, help_id, question_id,
411 varstore_id, varstore_info );
412 DBGC2_HDA ( ifr, dispaddr,
string,
sizeof ( *
string ) );
421 size_t dispaddr = ifr->
ops_len;
426 sizeof ( *suppress_if ) );
429 DBGC ( ifr,
"IFR %p suppress-if\n", ifr );
430 DBGC2_HDA ( ifr, dispaddr, suppress_if,
sizeof ( *suppress_if ) );
442 unsigned int help_id,
unsigned int text_id ) {
443 size_t dispaddr = ifr->
ops_len;
454 DBGC ( ifr,
"IFR %p text prompt %#04x help %#04x text %#04x\n",
455 ifr, prompt_id, help_id, text_id );
456 DBGC2_HDA ( ifr, dispaddr, text,
sizeof ( *text ) );
465 size_t dispaddr = ifr->
ops_len;
471 DBGC ( ifr,
"IFR %p true\n", ifr );
484 size_t dispaddr = ifr->
ops_len;
489 sizeof ( *varstore ) );
495 DBGC ( ifr,
"IFR %p name/value store %#04x\n",
497 DBGC2_HDA ( ifr, dispaddr, varstore,
sizeof ( *varstore ) );
510 memset ( ifr, 0,
sizeof ( *ifr ) );
528 const char *language,
529 unsigned int language_id ) {
541 strlen ( language ) + 1 ];
554 package = zalloc ( sizeof ( *package ) );
559 package->header.PackageLength =
sizeof ( *package );
560 memcpy ( &package->header.PackageListGuid,
guid,
561 sizeof ( package->header.PackageListGuid ) );
562 package->ops.header.Length =
sizeof ( package->ops );
564 memcpy ( package->ops.data, ifr->
ops, sizeof ( package->ops.data ) );
565 package->strings.header.header.Header.Length =
566 sizeof ( package->strings );
567 package->strings.header.header.Header.Type =
569 package->strings.header.header.HdrSize =
570 sizeof ( package->strings.header );
571 package->strings.header.header.StringInfoOffset =
572 sizeof ( package->strings.header );
573 package->strings.header.header.LanguageName = language_id;
574 strcpy ( package->strings.header.header.Language, language );
576 sizeof ( package->strings.data ) );
579 package->end.Length =
sizeof ( package->end );
581 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.
void efi_ifr_end_op(struct efi_ifr_builder *ifr)
Add end opcode to IFR builder.
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.
uint16_t size
Buffer size.
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.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
#define EFI_IFR_EXTEND_OP_SUBCLASS
struct MINMAXSTEP_DATA::@596 u16
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.
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.
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.
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.
union _EFI_IFR_GET::@600 VarStoreInfo
struct ena_llq_option header
Header locations.
unsigned int form_id
Current form identifier.
uint32_t end
Ending offset.
struct MINMAXSTEP_DATA::@597 u32
uint8_t data[48]
Additional event data.
int ssize_t const char * fmt
void * realloc(void *old_ptr, size_t new_size)
Reallocate memory.
struct MINMAXSTEP_DATA::@598 u64
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 *)
struct MINMAXSTEP_DATA::@595 u8
EFI_GUID Guid
EFI_IFR_TIANO_GUID.
void * memset(void *dest, int character, size_t len) __nonnull