From a830fe0c4ee46ef8f6809da68ba36f32ad093a0c Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sat, 6 Sep 2014 20:31:37 +0200 Subject: move virtual terminal protocols into the info manual MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- doc/info/mds.texinfo | 169 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 168 insertions(+), 1 deletion(-) (limited to 'doc/info/mds.texinfo') diff --git a/doc/info/mds.texinfo b/doc/info/mds.texinfo index 1c07966..7394aac 100644 --- a/doc/info/mds.texinfo +++ b/doc/info/mds.texinfo @@ -1720,6 +1720,7 @@ simple, reference implementation of a, status icon tray. @menu * Infrastructure protocols:: Infrastructure protocols. +* Virtual terminal protocols:: Virtual terminal protocols. @end menu @@ -1936,12 +1937,178 @@ Optional. +@node Virtual terminal protocols +@section Virtual terminal protocols + +@menu +* get-vt:: Get the index of the virtual terminal the server is display on. +* configure-vt:: Reconfigure the virtual terminal the server is display on. +* switching-vt:: Notify servers about an ongoing virtual terminal switch. +@end menu + + + +@node get-vt +@subsection get-vt + +@table @asis +@item Identifying header: +@code{Command: get-vt} + +@item Action: +Get the index of the virtual terminal the server is display on. + +@item Required header: @code{Client ID} +Your ID, provided by the @code{ID assignment} header +in response to a @code{Command: assign-id} header. + +@item Response: +The server will response with the header @code{VT index} +and the index of the virtual terminal the server is +display on in decimal format. Additionally the server +will respond with the header @code{Active} with the value +@code{yes} if the VT is in the foreground or the value +@code{no} if the VT is in the background. + +@item Purpose: +Allow programs to be aware of whether the display is in the +foreground or the background. + +@item Purpose: +Allow programs to be aware of which VT the server is running on. + +@item Purpose: +Allow programs to gain access of the TTY associated with the +VT such that they can use ioctl and similar calls on that TTY. + +@item Compulsivity: +Required. + +@item Reference implementation: +@code{vt} +@end table + + + +@node configure-vt +@subsection configure-vt + +@table @asis +@item Identifying header: +@code{configure-vt} + +@item Action: +Reconfigure the virtual terminal the server is display on. + +@item Required header: @code{Client ID} +Your ID, provided by the @code{ID assignment} header +in response to a @code{Command: assign-id} header. + +@item Optional header: @code{graphical} +@table @code +@item yes +Set the TTY graphical mode if the value of the header +@code{graphical} is @code{yes}. +@item no +Set the TTY text mode if the value of the header +@code{graphical} is @code{no}. +@end table +The server implementing this protocol should not set the +TTY to text mode temporarily when switching TTY. It is +up the the server that set the request for graphical mode +to temporarily switch to text mode when switching TTY. + +@item Optional header: @code{exclusive} +@table @code +@item yes +The server may block other process from opening the TTY +if the value of the header @code{exclusive} is @code{yes}. +@item no +The server may not block other process from opening the TTY +if the value of the header @code{exclusive} is @code{no}. +@end table + +@item Response: +The server will response with a @code{Command: error}. + +@item Purpose: +Allow presentation servers to enter and leave graphical mode. + +@item Purpose: +Allow programs to gain access of the TTY associated with the +VT such that they can use ioctl and similar calls on that TTY. + +@item Compulsivity: +Required. + +@item Reference implementation: +@code{vt} +@end table + + + +@node switching-vt +@subsection switching-vt + +@table @asis +@item Identifying header: +@code{Command: switching-vt} + +@item Action: +Notify servers about an ongoing virtual terminal switch. + +@item Required header: @code{Status} +@table @code +@item deactivating +The kernel wants to place the display in the background +if the value of the header @code{Status} is @code{deactivating}. +@item activating +The kernel wants to place the display in the foreground +if the value of the header @code{Status} is @code{activating}. +@end table + +@item Instructions: +When a virtual terminal switch is requested the +server implementing control VT switching involving +the display's virtual terminal will get signaled by +the kernel. Upon this signal the server should +broadcast this command. All servers that need to +release or acquire resouces should intercept this +message with the possibility of modifying it. Once +a server is ready for the VT to switch it should +let the message pass to the next server by telling +the master server that it is no modification to do. +Once all servers are read for the switch the server +that emitted this message should signal the kernel +that it may switch VT. The server should detect +this by setting up secondary contection to the +display that intercepts this message. This connection +should intercept this message with priority @math{-2^{62}}, +all servers that need to perform actions before the +switch takes place must have a priority higher than +@math{-2^{62}}, preferably 0. + +@item Purpose: +Allow servers to release resources when the user switch +virtual terminal before the terminal actually changes and +to reacquire resources when the virtual terminal become +active again. + +@item Compulsivity: +Required. + +@item Reference implementation: +@code{vt} and @code{kkbd} +@end table + + + @node libmdsserver @chapter libmdsserver libmdsserver is library written for the reference implementation of the @command{mds} servers. -libmdsserver does not contain support or any +llibmdsserver does not contain support or any protocols, rather it contains auxiliary functions, macros, data structures such as linked lists and hash tables, and support the basics of the message -- cgit v1.2.3-70-g09d2