1/* 2 * Copyright 2010, Michael Lotz, mmlr@mlotz.ch. 3 * Copyright 2004, Axel D��rfler, axeld@pinc-software.de. 4 * Distributed under the terms of the Haiku License. 5 */ 6 7#include <new> 8 9#include <stdio.h> 10#include <stdlib.h> 11#include <string.h> 12 13#include <lock.h> 14 15#include <tty/tty_module.h> 16 17#include "tty_private.h" 18 19struct mutex gGlobalTTYLock; 20struct mutex gTTYCookieLock; 21struct recursive_lock gTTYRequestLock; 22 23 24static status_t 25init_tty_module() 26{ 27 // create the request mutex 28 recursive_lock_init(&gTTYRequestLock, "tty requests"); 29 30 // create the global mutex 31 mutex_init(&gGlobalTTYLock, "tty global"); 32 33 // create the cookie mutex 34 mutex_init(&gTTYCookieLock, "tty cookies"); 35 36 return B_OK; 37} 38 39 40static void 41uninit_tty_module() 42{ 43 recursive_lock_destroy(&gTTYRequestLock); 44 mutex_destroy(&gTTYCookieLock); 45 mutex_destroy(&gGlobalTTYLock); 46} 47 48 49static int32 50tty_module_std_ops(int32 op, ...) 51{ 52 switch (op) { 53 case B_MODULE_INIT: 54 return init_tty_module(); 55 56 case B_MODULE_UNINIT: 57 uninit_tty_module(); 58 return B_OK; 59 } 60 61 return B_BAD_VALUE; 62} 63 64 65static struct tty_module_info sTTYModule = { 66 { 67 B_TTY_MODULE_NAME, 68 0, //B_KEEP_LOADED, 69 tty_module_std_ops 70 }, 71 72 &tty_create, 73 &tty_destroy, 74 &tty_create_cookie, 75 &tty_close_cookie, 76 &tty_destroy_cookie, 77 &tty_read, 78 &tty_write, 79 &tty_control, 80 &tty_select, 81 &tty_deselect, 82 &tty_hardware_signal 83}; 84 85 86module_info *modules[] = { 87 (module_info *)&sTTYModule, 88 NULL 89}; 90