summaryrefslogtreecommitdiffstats
path: root/qemu/roms/openbios/utils/ofclient/of1275_io.c
blob: 25d1132c3966ec563a3cd443a18fd46a90ade5af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "of1275.h"

static int of_write_initialized = 0;
static int stdout_ihandle = 0;
static int of_read_initialized = 0;
static int stdin_ihandle = 0;

int write(int fd, char *buf, int len)
{
	int actual;

	if (fd != 1 && fd != 2) {
		// printk("write: bad id %x\n", fd);
		exit(1);
	}

	if (!of_write_initialized) {
		stdout_ihandle =
		    of_find_integer_property("/chosen", "stdout");
		// printk("stdout_ihandle: %x\n",stdout_ihandle);
		of_write_initialized = 1;
	}

	of1275_write(stdout_ihandle, buf, len, &actual);
	return actual;
}

int read(int fd, char *buf, int len)
{
	int actual;

	if (fd != 0) {
		// printk("write: bad id %x\n", fd);
		exit(1);
	}

	if (!of_read_initialized) {
		stdin_ihandle =
		    of_find_integer_property("/chosen", "stdin");
		of_read_initialized = 1;
	}

	of1275_read(stdin_ihandle, buf, len, &actual);
	return actual;
}

exit(int status)
{
	of1275_exit(status);
	while (1);
}