19 #ifndef MIR_GRAPHICS_MESA_LINUX_VIRTUAL_TERMINAL_H_
20 #define MIR_GRAPHICS_MESA_LINUX_VIRTUAL_TERMINAL_H_
45 virtual int open(
char const* pathname,
int flags) = 0;
46 virtual int close(
int fd) = 0;
47 virtual int ioctl(
int d,
int request,
int val) = 0;
48 virtual int ioctl(
int d,
int request,
void* p_val) = 0;
49 virtual int tcsetattr(
int d,
int acts,
const struct termios *tcattr) = 0;
50 virtual int tcgetattr(
int d,
struct termios *tcattr) = 0;
63 virtual pid_t
getpid()
const = 0;
64 virtual pid_t
getppid()
const = 0;
65 virtual pid_t
getpgid(pid_t process)
const = 0;
66 virtual pid_t
getsid(pid_t process)
const = 0;
68 virtual int setpgid(pid_t process, pid_t group) = 0;
69 virtual pid_t
setsid() = 0;
81 std::unique_ptr<PosixProcessOperations> pops,
83 std::shared_ptr<DisplayReport>
const& report);
89 std::function<
bool()>
const& switch_away,
90 std::function<
bool()>
const& switch_back);
96 FDWrapper(std::shared_ptr<VTFileOperations>
const& fops,
int fd)
100 ~FDWrapper() {
if (fd_ >= 0) fops->close(fd_); }
101 int fd()
const {
return fd_; }
103 std::shared_ptr<VTFileOperations>
const fops;
107 int find_active_vt_number();
108 int open_vt(
int vt_number);
111 std::shared_ptr<VTFileOperations>
const fops;
112 std::unique_ptr<PosixProcessOperations>
const pops;
113 std::shared_ptr<DisplayReport>
const report;
114 FDWrapper
const vt_fd;
116 struct vt_mode prev_vt_mode;
118 struct termios prev_tcattr;
LinuxVirtualTerminal(std::shared_ptr< VTFileOperations > const &fops, std::unique_ptr< PosixProcessOperations > pops, int vt_number, std::shared_ptr< DisplayReport > const &report)
Definition: linux_virtual_terminal.cpp:39
PosixProcessOperations & operator=(PosixProcessOperations const &)=delete
VTFileOperations & operator=(VTFileOperations const &)=delete
virtual ~PosixProcessOperations()=default
virtual int setpgid(pid_t process, pid_t group)=0
virtual int tcsetattr(int d, int acts, const struct termios *tcattr)=0
PosixProcessOperations()=default
Definition: linux_virtual_terminal.h:40
virtual int ioctl(int d, int request, int val)=0
~LinuxVirtualTerminal() noexcept(true)
Definition: linux_virtual_terminal.cpp:98
virtual pid_t getpid() const =0
virtual ~VTFileOperations()=default
Definition: virtual_terminal.h:33
virtual int tcgetattr(int d, struct termios *tcattr)=0
void register_switch_handlers(EventHandlerRegister &handlers, std::function< bool()> const &switch_away, std::function< bool()> const &switch_back)
Definition: linux_virtual_terminal.cpp:130
virtual int close(int fd)=0
Definition: linux_virtual_terminal.h:58
Definition: linux_virtual_terminal.h:77
virtual pid_t getppid() const =0
VTFileOperations()=default
virtual int open(char const *pathname, int flags)=0
void set_graphics_mode()
Definition: linux_virtual_terminal.cpp:119
virtual pid_t getpgid(pid_t process) const =0
virtual pid_t getsid(pid_t process) const =0
Definition: event_handler_register.h:31