- some more defines

- the dano version is exposed as v1.1 so drivers can use select with a simple ifdef
- add copyrights from the tty driver as I'll be copying code from it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25201 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
François Revol
2008-04-26 21:56:46 +00:00
parent f709730477
commit 3196359ad2
4 changed files with 120 additions and 10 deletions
+53 -1
View File
@@ -27,7 +27,7 @@ struct ddomain {
};
typedef bool (*tty_service_func)(struct tty *, struct ddrover *, uint );
typedef bool (*tty_service_func)(struct tty *tty, struct ddrover *rover, uint op);
struct tty {
uint nopen;
@@ -53,6 +53,32 @@ struct ttyfile {
bigtime_t vtime;
};
// flags
#define TTYCARRIER (1 << 0)
#define TTYWRITABLE (1 << 1)
#define TTYWRITING (1 << 2)
#define TTYREADING (1 << 3)
#define TTYOSTOPPED (1 << 4)
#define TTYEXCLUSIVE (1 << 5)
#define TTYHWDCD (1 << 6)
#define TTYHWCTS (1 << 7)
#define TTYHWDSR (1 << 8)
#define TTYHWRI (1 << 9)
#define TTYFLOWFORCED (1 << 10)
// ops
#define TTYENABLE 0
#define TTYDISABLE 1
#define TTYSETMODES 2
#define TTYOSTART 3
#define TTYOSYNC 4
#define TTYISTOP 5
#define TTYIRESUME 6
#define TTYSETBREAK 7
#define TTYCLRBREAK 8
#define TTYSETDTR 9
#define TTYCLRDTR 10
#define TTYGETSIGNALS 11
typedef struct tty_module_info tty_module_info;
@@ -79,6 +105,32 @@ struct tty_module_info {
void (*ddracquire)(struct ddrover *, struct ddomain *);
};
// BeOS R5.1d0 has a different module with the same version...
// we exort this module as version 1.1 to allow using select from drivers
struct tty_module_info_dano {
// not a real bus manager... no rescan() !
module_info mi;
status_t (*ttyopen)(struct ttyfile *, struct ddrover *, tty_service_func);
status_t (*ttyclose)(struct ttyfile *, struct ddrover *);
status_t (*ttyfree)(struct ttyfile *, struct ddrover *);
status_t (*ttyread)(struct ttyfile *, struct ddrover *, char *, size_t *);
status_t (*ttywrite)(struct ttyfile *, struct ddrover *, const char *, size_t *);
status_t (*ttycontrol)(struct ttyfile *, struct ddrover *, ulong, void *, size_t);
status_t (*ttyselect)(struct ttyfile *, struct ddrover *, uint8, uint32, selectsync *);
status_t (*ttydeselect)(struct ttyfile *, struct ddrover *, uint8, selectsync *);
void (*ttyinit)(struct tty *, bool);
void (*ttyilock)(struct tty *, struct ddrover *, bool );
void (*ttyhwsignal)(struct tty *, struct ddrover *, int, bool);
int (*ttyin)(struct tty *, struct ddrover *, int);
int (*ttyout)(struct tty *, struct ddrover *);
struct ddrover *(*ddrstart)(struct ddrover *);
void (*ddrdone)(struct ddrover *);
void (*ddracquire)(struct ddrover *, struct ddomain *);
};
#define B_TTY_MODULE_NAME "bus_managers/tty/v1"
#define B_TTY_MODULE_NAME_DANO "bus_managers/tty/v1.1"
#endif /* _TTY_TTYLAYER_H */