console: allow one user at a time.
Fixes #15142. Change-Id: I203cb62a6640fcd5f674eeaf4aa1145e1e831ca6 Reviewed-on: https://review.haiku-os.org/c/1566 Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
committed by
waddlesplash
parent
2f6dc2bb79
commit
ed9a502a9a
@@ -78,6 +78,8 @@ static struct console_desc {
|
|||||||
|
|
||||||
int32 api_version = B_CUR_DRIVER_API_VERSION;
|
int32 api_version = B_CUR_DRIVER_API_VERSION;
|
||||||
|
|
||||||
|
static int32 sOpenMask;
|
||||||
|
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
update_cursor(struct console_desc *console, int x, int y)
|
update_cursor(struct console_desc *console, int x, int y)
|
||||||
@@ -659,6 +661,9 @@ _console_write(struct console_desc *console, const void *buffer, size_t length)
|
|||||||
static status_t
|
static status_t
|
||||||
console_open(const char *name, uint32 flags, void **cookie)
|
console_open(const char *name, uint32 flags, void **cookie)
|
||||||
{
|
{
|
||||||
|
if (atomic_or(&sOpenMask, 1) == 1)
|
||||||
|
return B_BUSY;
|
||||||
|
|
||||||
*cookie = &sConsole;
|
*cookie = &sConsole;
|
||||||
|
|
||||||
status_t status = get_module(sConsole.module_name, (module_info **)&sConsole.module);
|
status_t status = get_module(sConsole.module_name, (module_info **)&sConsole.module);
|
||||||
@@ -677,6 +682,8 @@ console_freecookie(void *cookie)
|
|||||||
sConsole.module = NULL;
|
sConsole.module = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
atomic_and(&sOpenMask, ~1);
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user