iPXE
disklog.h
Go to the documentation of this file.
1#ifndef _IPXE_DISKLOG_H
2#define _IPXE_DISKLOG_H
3
4/** @file
5 *
6 * Disk log console
7 *
8 */
9
10FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
11FILE_SECBOOT ( PERMITTED );
12
13#ifndef ASSEMBLY
14
15#include <stdint.h>
16#include <ipxe/console.h>
17
18/** Disk log partition header */
20 /** Magic signature */
21 char magic[10];
22} __attribute__ (( packed ));
23
24/** A disk log */
25struct disklog {
26 /** Console device */
28 /** Disk log operations */
30 /** Logical block data buffer */
32 /** Logical block size */
33 size_t blksize;
34 /** Current logical block index */
36 /** Maximum logical block index */
38 /** Current offset within logical block */
39 unsigned int offset;
40 /** Current number of unwritten characters */
41 unsigned int unwritten;
42};
43
44/** Disk log operations */
46 /**
47 * Write current logical block
48 *
49 * @ret rc Return status code
50 */
51 int ( * write ) ( void );
52};
53
54/**
55 * Initialise disk log console
56 *
57 * @v disklog Disk log
58 * @v op Disk log operations
59 * @v console Console device
60 * @v buffer Data buffer
61 * @v blksize Logical block size
62 * @v lba Starting logical block index
63 * @v max_lba Maximum logical block index
64 */
65static inline __attribute__ (( always_inline )) void
67 struct console_driver *console, void *buffer, size_t blksize,
68 uint64_t lba, uint64_t max_lba ) {
69
70 disklog->op = op;
71 disklog->console = console;
74 disklog->lba = lba;
75 disklog->max_lba = max_lba;
76}
77
78extern int disklog_open ( struct disklog *disklog );
79extern void disklog_putchar ( struct disklog *disklog, int character );
80
81#endif /* ASSEMBLY */
82
83/** Disk log partition type */
84#define DISKLOG_PARTITION_TYPE 0xe0
85
86/** Disk log partition magic signature */
87#define DISKLOG_MAGIC "iPXE LOG\n\n"
88
89/** Maximum number of outstanding unwritten characters */
90#define DISKLOG_MAX_UNWRITTEN 64
91
92#endif /* _IPXE_DISKLOG_H */
unsigned long long uint64_t
Definition stdint.h:13
unsigned char uint8_t
Definition stdint.h:10
int disklog_open(struct disklog *disklog)
Open disk log console.
Definition disklog.c:46
static void disklog_init(struct disklog *disklog, struct disklog_operations *op, struct console_driver *console, void *buffer, size_t blksize, uint64_t lba, uint64_t max_lba)
Initialise disk log console.
Definition disklog.h:66
void disklog_putchar(struct disklog *disklog, int character)
Write character to disk log console.
Definition disklog.c:85
uint64_t lba
Starting block number.
Definition int13.h:11
uint32_t buffer
Buffer index (or NETVSC_RNDIS_NO_BUFFER).
Definition netvsc.h:5
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
Definition compiler.h:921
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
Definition compiler.h:951
#define __attribute__(x)
Definition compiler.h:10
User interaction.
static uint16_t struct vmbus_xfer_pages_operations * op
Definition netvsc.h:327
uint32_t blksize
Cipher block size.
Definition pccrr.h:1
A console driver.
Definition console.h:56
Disk log partition header.
Definition disklog.h:19
char magic[10]
Magic signature.
Definition disklog.h:21
Disk log operations.
Definition disklog.h:45
int(* write)(void)
Write current logical block.
Definition disklog.h:51
A disk log.
Definition disklog.h:25
struct disklog_operations * op
Disk log operations.
Definition disklog.h:29
uint8_t * buffer
Logical block data buffer.
Definition disklog.h:31
size_t blksize
Logical block size.
Definition disklog.h:33
unsigned int offset
Current offset within logical block.
Definition disklog.h:39
uint64_t lba
Current logical block index.
Definition disklog.h:35
unsigned int unwritten
Current number of unwritten characters.
Definition disklog.h:41
struct console_driver * console
Console device.
Definition disklog.h:27
uint64_t max_lba
Maximum logical block index.
Definition disklog.h:37