1510N/A * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. 1470N/A * Permission is hereby granted, free of charge, to any person obtaining a 1470N/A * copy of this software and associated documentation files(the "Software"), 1470N/A * to deal in the Software without restriction, including without limitation 1470N/A * the rights to use, copy, modify, merge, publish, distribute, sublicense, 1470N/A * and/or sell copies of the Software, and to permit persons to whom the 1470N/A * Software is furnished to do so, subject to the following conditions: 1470N/A * The above copyright notice and this permission notice(including the next 1470N/A * paragraph) shall be included in all copies or substantial portions of the 1470N/A * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1470N/A * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1470N/A * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1470N/A * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1470N/A * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 1470N/A * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 1470N/A * DEALINGS IN THE SOFTWARE. 1470N/A /* walk through other tokens */ 1470N/A /* only need one line from read */ 1470N/A perror(
"get_sessions: fail to exec");
/* shouldn't be reached */ 1470N/A sizeof (
"'TRUE'") -
1) == 0)
1470N/A sizeof (
"'FALSE'") -
1) == 0)
1470N/A sizeof (
"\tx11-display = ") -
1) == 0) {
1470N/A sizeof (
"\tsession-type = ") -
1) == 0) {
1470N/A sizeof (
"\tdisplay-type = ") -
1) == 0) {
1470N/A /* called from init() or fini() */ 1470N/A /* delete all sessions, only when called from fini() */ 1470N/A * session closed, also need to verify server 1470N/A * termination before exiting 1470N/A * add a delay if server's termination cannot be 1470N/A /* delete single session */ 1470N/A * session closed, also need to verify server 1470N/A * termination before exiting 1470N/A * add a delay if server's termination cannot be 1470N/A /* add all sessions, only when called from init() */ 1470N/A /* consolekit session was created */ 1470N/A /* consolekit session was created */ 1470N/A * no valid session id in mgr table, this is abnormal. 1470N/A /* session already deleted */ 1470N/A /* has a user session for it, delete it first */ 1470N/A /* avoid using display :0 */ 1470N/A /* add session on existing device */ 1470N/A printf(
"session for device already running - not added\n");
1470N/A * check to see if a ck session already running on 1470N/A * the same display. this could happen when previous 1470N/A * verify_and_set() got interrupted . 1470N/A /* index == disp_num, and adding a new session */ 1470N/A * unless called from init(), always need a re-probe, as the numbering 1470N/A * of root complex may have changed. So table's busid needs update if 1470N/A * the device already exits in the table. 1470N/A /* add a session for new device */ 1470N/A " --display-type=HotPlug --seat-id=StaticSeat1" 1470N/A sizeof (
"LoginWindow") -
1) == 0) &&
1470N/A sizeof (
"HotPlug") -
1) == 0) &&
1470N/A /* handle closed sessions */ 1470N/A /* found a session in mgr table with valid display */ 1470N/A sizeof (
"LoginWindow") -
1) != 0) &&
1470N/A * found user session (type is not "LoginWindow") 1470N/A * with same display. update mgr table 1470N/A sizeof (
"TRANSFERRED") -
1) != 0) {
1470N/A /* not a transferred session, delete it as it's closed */ 1470N/A /* session in mgr table, need to update entry */ 1470N/A * corresponding session in ck table becomes open and 1470N/A * the user session does not exist any more 1470N/A /* verify sessions just deleted */ 1470N/A /* destroy the shared memory area */ 1470N/A /* shared memory already exists */ 1470N/A "before running \"dsession -i/--init\"\n");
1470N/A /* shared memory has never been created */ 1470N/A /* dynamically add sessions, one for each device */ 1470N/A /* verify sessions just added */ 1470N/A " Print help messages\n\n");
1470N/A " Run sub-command, where\n\n" 1470N/A " -v or --verb\t\tPrint debug messages\n\n" 1470N/A " sub-command:\t\t(<dev> is path of display device)\n" 1470N/A " -a or --add <dev>\t\tAdd a dsession to run on <dev>\n" 1470N/A " -d or --delete <dev>\tDelete a dsession running on <dev>\n" 1470N/A " -r or --restart <dev>\tRestart a dsession running on <dev>\n" 1470N/A " -l or --list all\t\tList all dsessions\n" 1470N/A " -l or --list dev\t\tProbe and list devs\n" 1470N/A " -l or --list <dev>\t\tList dsession running on <dev>\n" 1470N/A " -i or --init\t\tInitialize: create shared memory\n" 1470N/A " \t\tand mutex, add all dsessions\n" 1470N/A " -f or --fini\t\tFinish: delete all dsessions\n" 1470N/A " -c or --clean\t\tDelete all dsessions,\n" 1470N/A " \t\tdestroy mutex and shared memory\n");