aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/xen/console/xencons_ring.h
blob: b8a6a04917cbc90c4151d1160486bae019dae86e (plain) (blame)
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
/*
 * $FreeBSD: src/sys/dev/xen/console/xencons_ring.h,v 1.2.2.1.6.1 2010/12/21 17:09:25 kensmith Exp $
 *
 */
#ifndef _XENCONS_RING_H
#define _XENCONS_RING_H

#define CN_LOCK(l)        								\
		do {											\
				if (panicstr == NULL)					\
                        mtx_lock_spin(&(l));			\
		} while (0)
#define CN_UNLOCK(l)        							\
		do {											\
				if (panicstr == NULL)					\
                        mtx_unlock_spin(&(l));			\
		} while (0)

int xencons_ring_init(void);
int xencons_ring_send(const char *data, unsigned len);
void xencons_rx(char *buf, unsigned len);
void xencons_tx(void);


typedef void (xencons_receiver_func)(char *buf, unsigned len);
void xencons_ring_register_receiver(xencons_receiver_func *f);

void xencons_handle_input(void *unused);
int xencons_has_input(void);

#endif /* _XENCONS_RING_H */