PatchworkOS
19e446b
A non-POSIX operating system.
Theme:
Default
Round
Robot
Loading...
Searching...
No Matches
std_streams.c
Go to the documentation of this file.
1
#include "
std_streams.h
"
2
#include "
file.h
"
3
4
#include <
errno.h
>
5
#include <
stdlib.h
>
6
#include <
string.h
>
7
#include <
sys/fs.h
>
8
9
static
uint8_t
_stdin_buff
[
BUFSIZ
];
10
static
uint8_t
_stdout_buff
[
BUFSIZ
];
11
static
uint8_t
_stderr_buff
[
BUFSIZ
];
12
13
static
FILE
_stdin
;
14
static
FILE
_stdout
;
15
static
FILE
_stderr
;
16
17
FILE
*
stdin
;
18
FILE
*
stdout
;
19
FILE
*
stderr
;
20
21
static
void
_std_stream_init
(
fd_t
fd,
FILE
* stream,
FILE
** streamPtr,
void
*
buffer
,
_file_flags_t
flags
)
22
{
23
memset
(stream, 0,
sizeof
(
FILE
));
24
list_entry_init
(&stream->
entry
);
25
26
if
(
_file_init
(stream, fd,
flags
,
buffer
,
BUFSIZ
) ==
ERR
)
27
{
28
fprintf
(
stderr
,
"libstd: failed to initialize standard stream (fd=%d)\n"
, fd);
29
abort
();
30
}
31
32
_files_push
(stream);
33
*streamPtr = stream;
34
}
35
36
void
_std_streams_init
(
void
)
37
{
38
_std_stream_init
(
STDIN_FILENO
, &
_stdin
, &
stdin
,
_stdin_buff
,
_FILE_LINE_BUFFERED
|
_FILE_READ
);
39
_std_stream_init
(
STDOUT_FILENO
, &
_stdout
, &
stdout
,
_stdout_buff
,
_FILE_LINE_BUFFERED
|
_FILE_WRITE
);
40
_std_stream_init
(
STDERR_FILENO
, &
_stderr
, &
stderr
,
_stderr_buff
,
_FILE_UNBUFFERED
|
_FILE_WRITE
);
41
errno
=
EOK
;
42
}
buffer
EFI_PHYSICAL_ADDRESS buffer
Definition
main.c:237
errno.h
errno
#define errno
Error number variable.
Definition
errno.h:27
EOK
#define EOK
No error.
Definition
errno.h:32
STDOUT_FILENO
#define STDOUT_FILENO
Standard output file descriptor.
Definition
fs.h:36
STDERR_FILENO
#define STDERR_FILENO
Standard error file descriptor.
Definition
fs.h:37
STDIN_FILENO
#define STDIN_FILENO
Standard input file descriptor.
Definition
fs.h:35
list_entry_init
static void list_entry_init(list_entry_t *entry)
Initializes a list entry.
Definition
list.h:173
ERR
#define ERR
Integer error value.
Definition
ERR.h:17
fd_t
__UINT64_TYPE__ fd_t
File descriptor type.
Definition
fd_t.h:10
fs.h
_files_push
void _files_push(FILE *file)
Definition
file.c:264
_file_init
uint64_t _file_init(FILE *stream, fd_t fd, _file_flags_t flags, void *buffer, uint64_t bufferSize)
Definition
file.c:100
flags
static const path_flag_t flags[]
Definition
path.c:47
file.h
_file_flags_t
_file_flags_t
Definition
file.h:9
_FILE_READ
@ _FILE_READ
Definition
file.h:10
_FILE_WRITE
@ _FILE_WRITE
Definition
file.h:11
_FILE_UNBUFFERED
@ _FILE_UNBUFFERED
Definition
file.h:18
_FILE_LINE_BUFFERED
@ _FILE_LINE_BUFFERED
Definition
file.h:17
_stdout
static FILE _stdout
Definition
std_streams.c:14
_stderr_buff
static uint8_t _stderr_buff[BUFSIZ]
Definition
std_streams.c:11
_stderr
static FILE _stderr
Definition
std_streams.c:15
_stdin_buff
static uint8_t _stdin_buff[BUFSIZ]
Definition
std_streams.c:9
_std_stream_init
static void _std_stream_init(fd_t fd, FILE *stream, FILE **streamPtr, void *buffer, _file_flags_t flags)
Definition
std_streams.c:21
_stdout_buff
static uint8_t _stdout_buff[BUFSIZ]
Definition
std_streams.c:10
stdout
FILE * stdout
Definition
std_streams.c:18
stderr
FILE * stderr
Definition
std_streams.c:19
stdin
FILE * stdin
Definition
std_streams.c:17
_stdin
static FILE _stdin
Definition
std_streams.c:13
_std_streams_init
void _std_streams_init(void)
Definition
std_streams.c:36
std_streams.h
uint8_t
__UINT8_TYPE__ uint8_t
Definition
stdint.h:11
BUFSIZ
#define BUFSIZ
Definition
stdio.h:26
fprintf
_PUBLIC int fprintf(FILE *_RESTRICT stream, const char *_RESTRICT format,...)
Definition
fprintf.c:3
stdlib.h
abort
_PUBLIC _NORETURN void abort(void)
Definition
abort.c:9
string.h
memset
_PUBLIC void * memset(void *s, int c, size_t n)
Definition
memset.c:4
FILE
Definition
file.h:34
FILE::entry
list_entry_t entry
Definition
file.h:35
src
libstd
user
common
std_streams.c
Generated on Sat Jan 24 2026 10:59:25 for PatchworkOS by
1.9.8