3 // Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
5 // This program is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation; version 2 of the License.
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
14 // You should have received a copy of the GNU General Public License
15 // along with this program; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
27 // try to switch in context 1
29 switchToWatchXid(char const **errptr)
32 # warning Compiling in debug-code
35 if (vc_get_task_xid(0)==1) return true;
37 if (vc_isSupported(vcFEATURE_MIGRATE)) {
40 if (vc_ctx_create(1)==VC_NOCTX) {
41 if (errno==EBUSY && --max_tries>0) {
47 if (errptr) *errptr = "vc_create_context()";
51 if (vc_ctx_migrate(1)==-1) {
52 if (errptr) *errptr = "vc_migrate_context()";
57 struct vc_ctx_flags flags = {
59 .mask = VC_VXF_STATE_SETUP,
62 if (vc_set_cflags(1, &flags)==-1) {
63 if (errptr) *errptr = "vc_set_cflags()";
69 #if VC_ENABLE_API_COMPAT
70 if (vc_new_s_context(1,0,0)==VC_NOCTX) {
71 if (errptr) *errptr = "vc_new_s_context()";
75 if (errptr) *errptr = "can not change context: migrate kernel feature missing and 'compat' API disabled";