--- /dev/null
+Add James McKenzie's xblanker tool
+
+diff --git a/tools/misc/xblanker/AUTHORS b/tools/misc/xblanker/AUTHORS
+new file mode 100644
+index 0000000..537e982
+--- /dev/null
++++ b/tools/misc/xblanker/AUTHORS
+@@ -0,0 +1,16 @@
++#
++#
++# AUTHORS:
++#
++# Copyright (c) 2009 James McKenzie <20@madingley.org>,
++# All rights reserved.
++#
++# $Id: AUTHORS,v 1.1 2009/07/31 11:58:28 jamesmck Exp $
++#
++# $Log: AUTHORS,v $
++# Revision 1.1 2009/07/31 11:58:28 jamesmck
++# *** empty log message ***
++#
++#
++#
++James McKenzie, <20@madingley.org>
+diff --git a/tools/misc/xblanker/COPYING b/tools/misc/xblanker/COPYING
+new file mode 100644
+index 0000000..985a419
+--- /dev/null
++++ b/tools/misc/xblanker/COPYING
+@@ -0,0 +1,13 @@
++#
++# COPYING:
++#
++# Copyright (c) 2009 James McKenzie <20@madingley.org>,
++# All rights reserved.
++#
++# $Id: COPYING,v 1.1 2009/07/31 11:58:28 jamesmck Exp $
++#
++# $Log: COPYING,v $
++# Revision 1.1 2009/07/31 11:58:28 jamesmck
++# *** empty log message ***
++#
++#
+diff --git a/tools/misc/xblanker/ChangeLog b/tools/misc/xblanker/ChangeLog
+new file mode 100644
+index 0000000..ba5b13d
+--- /dev/null
++++ b/tools/misc/xblanker/ChangeLog
+@@ -0,0 +1,15 @@
++#
++#
++# ChangeLog:
++#
++# Copyright (c) 2009 James McKenzie <20@madingley.org>,
++# All rights reserved.
++#
++# $Id: ChangeLog,v 1.1 2009/07/31 11:58:28 jamesmck Exp $
++#
++# $Log: ChangeLog,v $
++# Revision 1.1 2009/07/31 11:58:28 jamesmck
++# *** empty log message ***
++#
++#
++#
+diff --git a/tools/misc/xblanker/INSTALL b/tools/misc/xblanker/INSTALL
+new file mode 100644
+index 0000000..23e5f25
+--- /dev/null
++++ b/tools/misc/xblanker/INSTALL
+@@ -0,0 +1,236 @@
++Installation Instructions
++*************************
++
++Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
++Software Foundation, Inc.
++
++This file is free documentation; the Free Software Foundation gives
++unlimited permission to copy, distribute and modify it.
++
++Basic Installation
++==================
++
++These are generic installation instructions.
++
++ The `configure' shell script attempts to guess correct values for
++various system-dependent variables used during compilation. It uses
++those values to create a `Makefile' in each directory of the package.
++It may also create one or more `.h' files containing system-dependent
++definitions. Finally, it creates a shell script `config.status' that
++you can run in the future to recreate the current configuration, and a
++file `config.log' containing compiler output (useful mainly for
++debugging `configure').
++
++ It can also use an optional file (typically called `config.cache'
++and enabled with `--cache-file=config.cache' or simply `-C') that saves
++the results of its tests to speed up reconfiguring. (Caching is
++disabled by default to prevent problems with accidental use of stale
++cache files.)
++
++ If you need to do unusual things to compile the package, please try
++to figure out how `configure' could check whether to do them, and mail
++diffs or instructions to the address given in the `README' so they can
++be considered for the next release. If you are using the cache, and at
++some point `config.cache' contains results you don't want to keep, you
++may remove or edit it.
++
++ The file `configure.ac' (or `configure.in') is used to create
++`configure' by a program called `autoconf'. You only need
++`configure.ac' if you want to change it or regenerate `configure' using
++a newer version of `autoconf'.
++
++The simplest way to compile this package is:
++
++ 1. `cd' to the directory containing the package's source code and type
++ `./configure' to configure the package for your system. If you're
++ using `csh' on an old version of System V, you might need to type
++ `sh ./configure' instead to prevent `csh' from trying to execute
++ `configure' itself.
++
++ Running `configure' takes awhile. While running, it prints some
++ messages telling which features it is checking for.
++
++ 2. Type `make' to compile the package.
++
++ 3. Optionally, type `make check' to run any self-tests that come with
++ the package.
++
++ 4. Type `make install' to install the programs and any data files and
++ documentation.
++
++ 5. You can remove the program binaries and object files from the
++ source code directory by typing `make clean'. To also remove the
++ files that `configure' created (so you can compile the package for
++ a different kind of computer), type `make distclean'. There is
++ also a `make maintainer-clean' target, but that is intended mainly
++ for the package's developers. If you use it, you may have to get
++ all sorts of other programs in order to regenerate files that came
++ with the distribution.
++
++Compilers and Options
++=====================
++
++Some systems require unusual options for compilation or linking that the
++`configure' script does not know about. Run `./configure --help' for
++details on some of the pertinent environment variables.
++
++ You can give `configure' initial values for configuration parameters
++by setting variables in the command line or in the environment. Here
++is an example:
++
++ ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
++
++ *Note Defining Variables::, for more details.
++
++Compiling For Multiple Architectures
++====================================
++
++You can compile the package for more than one kind of computer at the
++same time, by placing the object files for each architecture in their
++own directory. To do this, you must use a version of `make' that
++supports the `VPATH' variable, such as GNU `make'. `cd' to the
++directory where you want the object files and executables to go and run
++the `configure' script. `configure' automatically checks for the
++source code in the directory that `configure' is in and in `..'.
++
++ If you have to use a `make' that does not support the `VPATH'
++variable, you have to compile the package for one architecture at a
++time in the source code directory. After you have installed the
++package for one architecture, use `make distclean' before reconfiguring
++for another architecture.
++
++Installation Names
++==================
++
++By default, `make install' installs the package's commands under
++`/usr/local/bin', include files under `/usr/local/include', etc. You
++can specify an installation prefix other than `/usr/local' by giving
++`configure' the option `--prefix=PREFIX'.
++
++ You can specify separate installation prefixes for
++architecture-specific files and architecture-independent files. If you
++pass the option `--exec-prefix=PREFIX' to `configure', the package uses
++PREFIX as the prefix for installing programs and libraries.
++Documentation and other data files still use the regular prefix.
++
++ In addition, if you use an unusual directory layout you can give
++options like `--bindir=DIR' to specify different values for particular
++kinds of files. Run `configure --help' for a list of the directories
++you can set and what kinds of files go in them.
++
++ If the package supports it, you can cause programs to be installed
++with an extra prefix or suffix on their names by giving `configure' the
++option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
++
++Optional Features
++=================
++
++Some packages pay attention to `--enable-FEATURE' options to
++`configure', where FEATURE indicates an optional part of the package.
++They may also pay attention to `--with-PACKAGE' options, where PACKAGE
++is something like `gnu-as' or `x' (for the X Window System). The
++`README' should mention any `--enable-' and `--with-' options that the
++package recognizes.
++
++ For packages that use the X Window System, `configure' can usually
++find the X include and library files automatically, but if it doesn't,
++you can use the `configure' options `--x-includes=DIR' and
++`--x-libraries=DIR' to specify their locations.
++
++Specifying the System Type
++==========================
++
++There may be some features `configure' cannot figure out automatically,
++but needs to determine by the type of machine the package will run on.
++Usually, assuming the package is built to be run on the _same_
++architectures, `configure' can figure that out, but if it prints a
++message saying it cannot guess the machine type, give it the
++`--build=TYPE' option. TYPE can either be a short name for the system
++type, such as `sun4', or a canonical name which has the form:
++
++ CPU-COMPANY-SYSTEM
++
++where SYSTEM can have one of these forms:
++
++ OS KERNEL-OS
++
++ See the file `config.sub' for the possible values of each field. If
++`config.sub' isn't included in this package, then this package doesn't
++need to know the machine type.
++
++ If you are _building_ compiler tools for cross-compiling, you should
++use the option `--target=TYPE' to select the type of system they will
++produce code for.
++
++ If you want to _use_ a cross compiler, that generates code for a
++platform different from the build platform, you should specify the
++"host" platform (i.e., that on which the generated programs will
++eventually be run) with `--host=TYPE'.
++
++Sharing Defaults
++================
++
++If you want to set default values for `configure' scripts to share, you
++can create a site shell script called `config.site' that gives default
++values for variables like `CC', `cache_file', and `prefix'.
++`configure' looks for `PREFIX/share/config.site' if it exists, then
++`PREFIX/etc/config.site' if it exists. Or, you can set the
++`CONFIG_SITE' environment variable to the location of the site script.
++A warning: not all `configure' scripts look for a site script.
++
++Defining Variables
++==================
++
++Variables not defined in a site shell script can be set in the
++environment passed to `configure'. However, some packages may run
++configure again during the build, and the customized values of these
++variables may be lost. In order to avoid this problem, you should set
++them in the `configure' command line, using `VAR=value'. For example:
++
++ ./configure CC=/usr/local2/bin/gcc
++
++causes the specified `gcc' to be used as the C compiler (unless it is
++overridden in the site shell script). Here is a another example:
++
++ /bin/bash ./configure CONFIG_SHELL=/bin/bash
++
++Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
++configuration-related scripts to be executed by `/bin/bash'.
++
++`configure' Invocation
++======================
++
++`configure' recognizes the following options to control how it operates.
++
++`--help'
++`-h'
++ Print a summary of the options to `configure', and exit.
++
++`--version'
++`-V'
++ Print the version of Autoconf used to generate the `configure'
++ script, and exit.
++
++`--cache-file=FILE'
++ Enable the cache: use and save the results of the tests in FILE,
++ traditionally `config.cache'. FILE defaults to `/dev/null' to
++ disable caching.
++
++`--config-cache'
++`-C'
++ Alias for `--cache-file=config.cache'.
++
++`--quiet'
++`--silent'
++`-q'
++ Do not print messages saying which checks are being made. To
++ suppress all normal output, redirect it to `/dev/null' (any error
++ messages will still be shown).
++
++`--srcdir=DIR'
++ Look for the package's source code in directory DIR. Usually
++ `configure' can determine that directory automatically.
++
++`configure' also accepts some other, not widely useful, options. Run
++`configure --help' for more details.
++
+diff --git a/tools/misc/xblanker/Makefile.am b/tools/misc/xblanker/Makefile.am
+new file mode 100644
+index 0000000..dea5472
+--- /dev/null
++++ b/tools/misc/xblanker/Makefile.am
+@@ -0,0 +1,16 @@
++#
++#
++# Makefile.am:
++#
++# Copyright (c) 2009 James McKenzie <20@madingley.org>,
++# All rights reserved.
++#
++# $Id: Makefile.am,v 1.1 2009/07/31 11:58:28 jamesmck Exp $
++#
++# $Log: Makefile.am,v $
++# Revision 1.1 2009/07/31 11:58:28 jamesmck
++# *** empty log message ***
++#
++#
++#
++SUBDIRS=src
+diff --git a/tools/misc/xblanker/NEWS b/tools/misc/xblanker/NEWS
+new file mode 100644
+index 0000000..e4f6432
+--- /dev/null
++++ b/tools/misc/xblanker/NEWS
+@@ -0,0 +1,15 @@
++#
++#
++# NEWS:
++#
++# Copyright (c) 2009 James McKenzie <20@madingley.org>,
++# All rights reserved.
++#
++# $Id: NEWS,v 1.1 2009/07/31 11:58:28 jamesmck Exp $
++#
++# $Log: NEWS,v $
++# Revision 1.1 2009/07/31 11:58:28 jamesmck
++# *** empty log message ***
++#
++#
++#
+diff --git a/tools/misc/xblanker/README b/tools/misc/xblanker/README
+new file mode 100644
+index 0000000..6f5a50b
+--- /dev/null
++++ b/tools/misc/xblanker/README
+@@ -0,0 +1,15 @@
++#
++#
++# README:
++#
++# Copyright (c) 2009 James McKenzie <20@madingley.org>,
++# All rights reserved.
++#
++# $Id: README,v 1.1 2009/07/31 11:58:28 jamesmck Exp $
++#
++# $Log: README,v $
++# Revision 1.1 2009/07/31 11:58:28 jamesmck
++# *** empty log message ***
++#
++#
++#
+diff --git a/tools/misc/xblanker/autogen.sh b/tools/misc/xblanker/autogen.sh
+new file mode 100755
+index 0000000..bcabd0d
+--- /dev/null
++++ b/tools/misc/xblanker/autogen.sh
+@@ -0,0 +1,17 @@
++#!/bin/sh
++#
++# bstrap:
++#
++# Copyright (c) 2009 James McKenzie <20@madingley.org>,
++# All rights reserved.
++#
++# $Id: autogen.sh,v 1.1 2009/07/31 11:58:28 jamesmck Exp $
++#
++# $Log: autogen.sh,v $
++# Revision 1.1 2009/07/31 11:58:28 jamesmck
++# *** empty log message ***
++#
++#
++#
++#
++autoreconf -i --force
+diff --git a/tools/misc/xblanker/configure.in b/tools/misc/xblanker/configure.in
+new file mode 100644
+index 0000000..4a5f903
+--- /dev/null
++++ b/tools/misc/xblanker/configure.in
+@@ -0,0 +1,68 @@
++dnl
++dnl
++dnl configure.in.head:
++dnl
++dnl Copyright (c) 2009 James McKenzie <20@madingley.org>,
++dnl All rights reserved.
++dnl
++dnl $Id: configure.in,v 1.1 2009/07/31 11:58:28 jamesmck Exp $
++dnl
++dnl $Log: configure.in,v $
++dnl Revision 1.1 2009/07/31 11:58:28 jamesmck
++dnl *** empty log message ***
++dnl
++dnl
++dnl
++dnl
++AC_PREREQ(2.13)
++AC_INIT(src/xblanker.c)
++
++AC_PROG_CC
++AC_PROG_CPP
++AC_PROG_INSTALL
++AC_PROG_LN_S
++AC_PROG_MAKE_SET
++AC_PROG_RANLIB
++AC_PROG_AWK
++AC_CHECK_PROG(MD5SUM,md5sum,md5sum)
++AC_CHECK_PROG(GREP,grep,grep)
++
++AC_SYS_LARGEFILE
++
++XBLANKER_MAJOR_VERSION=`cat $srcdir/version-major`
++XBLANKER_MINOR_VERSION=`cat $srcdir/version-minor`
++XBLANKER_MICRO_VERSION=`cat $srcdir/version-micro`
++
++
++XBLANKER_VERSION=$XBLANKER_MAJOR_VERSION.$XBLANKER_MINOR_VERSION.$XBLANKER_MICRO_VERSION
++
++AC_SUBST(XBLANKER_MAJOR_VERSION)
++AC_SUBST(XBLANKER_MINOR_VERSION)
++AC_SUBST(XBLANKER_MICRO_VERSION)
++AC_SUBST(XBLANKER_VERSION)
++
++
++VERSION=$XBLANKER_VERSION
++PACKAGE=xblanker
++
++AM_INIT_AUTOMAKE($PACKAGE,$VERSION)
++
++PKG_CHECK_MODULES(X, x11)
++AC_SUBST(X_CFLAGS)
++AC_SUBST(X_LIBS)
++
++AM_CONFIG_HEADER(src/config.h)
++
++# Checks for header files.
++AC_CHECK_HEADERS([malloc.h])
++AC_HEADER_STDC
++AC_FUNC_MALLOC
++
++AC_C_INLINE
++AC_C_CONST
++
++
++AC_OUTPUT([Makefile
++ src/Makefile])
++
++
+diff --git a/tools/misc/xblanker/src/Makefile.am b/tools/misc/xblanker/src/Makefile.am
+new file mode 100644
+index 0000000..8ec19f0
+--- /dev/null
++++ b/tools/misc/xblanker/src/Makefile.am
+@@ -0,0 +1,63 @@
++#
++#
++# Makefile.am:
++#
++# Copyright (c) 2009 James McKenzie <20@madingley.org>,
++# All rights reserved.
++#
++# $Id: Makefile.am,v 1.2 2009/07/31 12:59:40 jamesmck Exp $
++#
++# $Log: Makefile.am,v $
++# Revision 1.2 2009/07/31 12:59:40 jamesmck
++# *** empty log message ***
++#
++# Revision 1.1 2009/07/31 11:58:28 jamesmck
++# *** empty log message ***
++#
++#
++#
++#
++
++CPROTO=cproto
++INCLUDES = ${X_CFLAGS}
++
++noinst_HEADERS=project.h prototypes.h
++
++bin_PROGRAMS = xblanker
++
++SRCS=xblanker.c version.c
++xblanker_SOURCES = ${SRCS}
++xblanker_LDADD = ${X_LIBS} -lxenstore
++
++AM_CFLAGS=-g
++
++xblanker_LDFLAGS =
++
++BUILT_SOURCES = version.h
++
++
++VFD=${srcdir}/..
++VF=${shell cat ${VFD}/version-files}
++VFS=${VF:%=${VFD}/%}
++VCHK=${shell cat ${VFS} | @MD5SUM@ | @AWK@ '{print $$1 }' }
++VNUM=${shell @GREP@ ${VCHK} ${VFD}/version-md5sums | @AWK@ '{ print $$2 }' }
++VDEF=${shell echo `cat ${VFD}/version-major`.`cat ${VFD}/version-minor`.`cat ${VFD}/version-micro` }
++
++protos:
++ echo > prototypes.h
++ ${CPROTO} -v ${INCLUDES} ${SRCS} > prototypes.tmp
++ mv -f prototypes.tmp prototypes.h
++
++
++
++version.h: $(VFD)/version-files $(VFD)/version-major \
++ $(VFD)/version-minor $(VFD)/version-micro \
++ $(VFD)/version-md5sums ${VFS} Makefile
++ if [ .${VNUM} = . ]; then \
++ echo "#define VERSION \"xblanker Version ${VDEF} + Edits\"" > version.h; \
++ echo ${VDEF}-E > version-num; \
++ else \
++ echo "#define VERSION \"xblanker Version ${VNUM}\"" > version.h; \
++ echo ${VNUM} > version-num; \
++ fi
++
+diff --git a/tools/misc/xblanker/src/project.h b/tools/misc/xblanker/src/project.h
+new file mode 100644
+index 0000000..2047a29
+--- /dev/null
++++ b/tools/misc/xblanker/src/project.h
+@@ -0,0 +1,74 @@
++/*
++ * project.h:
++ *
++ * Copyright (c) 2009 James McKenzie <20@madingley.org>,
++ * All rights reserved.
++ *
++ */
++
++/*
++ * $Id: project.h,v 1.2 2009/07/31 12:59:40 jamesmck Exp $
++ */
++
++/*
++ * $Log: project.h,v $
++ * Revision 1.2 2009/07/31 12:59:40 jamesmck
++ * *** empty log message ***
++ *
++ * Revision 1.1 2009/07/31 11:58:28 jamesmck
++ * *** empty log message ***
++ *
++ */
++
++#ifndef __PROJECT_H__
++#define __PROJECT_H__
++
++
++#include "config.h"
++
++#ifdef TM_IN_SYS_TIME
++#include <sys/time.h>
++#ifdef TIME_WITH_SYS_TIME
++#include <time.h>
++#endif
++#else
++#ifdef TIME_WITH_SYS_TIME
++#include <sys/time.h>
++#endif
++#include <time.h>
++#endif
++
++#include <stdio.h>
++#include <stdlib.h>
++
++#ifdef HAVE_MALLOC_H
++#include <malloc.h>
++#endif
++
++#ifdef HAVE_STRING_H
++#include <string.h>
++#endif
++
++#ifdef HAVE_STRINGS_H
++#include <strings.h>
++#endif
++
++#ifdef HAVE_UNISTD_H
++#include <unistd.h>
++#endif
++
++#if defined(HAVE_STDINT_H)
++#include <stdint.h>
++#elif defined(HAVE_SYS_INT_TYPES_H)
++#include <sys/int_types.h>
++#endif
++
++#include <sys/types.h>
++#include <X11/Xlib.h>
++#include <X11/Xutil.h>
++#include <sys/select.h>
++#include <xs.h>
++
++#include "prototypes.h"
++
++#endif /* __PROJECT_H__ */
+diff --git a/tools/misc/xblanker/src/prototypes.h b/tools/misc/xblanker/src/prototypes.h
+new file mode 100644
+index 0000000..e69de29
+diff --git a/tools/misc/xblanker/src/version.c b/tools/misc/xblanker/src/version.c
+new file mode 100644
+index 0000000..febb725
+--- /dev/null
++++ b/tools/misc/xblanker/src/version.c
+@@ -0,0 +1,25 @@
++/*
++ * version.c:
++ *
++ * Copyright (c) 2009 James McKenzie <20@madingley.org>,
++ * All rights reserved.
++ *
++ */
++
++static char rcsid[] = "$Id: version.c,v 1.1 2009/07/31 11:58:28 jamesmck Exp $";
++
++/*
++ * $Log: version.c,v $
++ * Revision 1.1 2009/07/31 11:58:28 jamesmck
++ * *** empty log message ***
++ *
++ */
++
++
++#include "version.h"
++
++static char *
++get_version(void)
++{
++ return VERSION;
++}
+diff --git a/tools/misc/xblanker/src/xblanker.c b/tools/misc/xblanker/src/xblanker.c
+new file mode 100644
+index 0000000..3588610
+--- /dev/null
++++ b/tools/misc/xblanker/src/xblanker.c
+@@ -0,0 +1,192 @@
++/*
++ * xblanker.c:
++ *
++ * Copyright (c) 2009 James McKenzie <20@madingley.org>,
++ * All rights reserved.
++ *
++ */
++
++static char rcsid[] =
++ "$Id: xblanker.c,v 1.2 2009/07/31 12:59:40 jamesmck Exp $";
++
++/*
++ * $Log: xblanker.c,v $
++ * Revision 1.2 2009/07/31 12:59:40 jamesmck
++ * *** empty log message ***
++ *
++ * Revision 1.1 2009/07/31 11:58:28 jamesmck
++ * *** empty log message ***
++ *
++ */
++
++
++
++#include "project.h"
++
++
++
++Display *dpy;
++int screen;
++long black;
++Window window;
++struct xs_handle *xsh;
++
++#define XS_PATH "/local/domain/0/dom0_driver/blank"
++
++int xenbus_read(void)
++{
++unsigned int len=0;
++char cbuf[128];
++char *buf= xs_read(xsh,XBT_NULL,XS_PATH,&len);
++
++if (!buf) return -1;
++if (!len) return -1;
++
++if (len>=sizeof(cbuf))
++ len=sizeof(cbuf)-1;
++
++memcpy(cbuf,buf,len);
++cbuf[len]=0;
++
++return atoi(cbuf);
++}
++
++void xenbus_write(int v)
++{
++unsigned int len;
++char buf[128];
++
++len=sprintf(buf,"%d",v);
++
++xs_write(xsh,XBT_NULL,XS_PATH,buf,len);
++}
++
++
++
++
++void
++blank (void)
++{
++ XMapRaised (dpy, window);
++ XWarpPointer (dpy, None, RootWindow (dpy, screen), 0, 0, 0, 0,
++ DisplayWidth (dpy, screen), DisplayHeight (dpy, screen));
++ XGrabServer (dpy);
++}
++
++void
++unblank (void)
++{
++ XUngrabServer (dpy);
++ XUnmapWindow (dpy, window);
++ XWarpPointer (dpy, None, RootWindow (dpy, screen), 0, 0, 0, 0,
++ DisplayWidth (dpy, screen) >> 1, DisplayHeight (dpy,
++ screen) >> 1);
++}
++
++
++int
++main (int argc, char *argv[])
++{
++ struct timeval tv = { 0 };
++ fd_set rfds;
++ int fd;
++
++int state=0,old_state=0;
++
++
++xsh=xs_domain_open();
++//xsh=xs_daemon_open();
++if (!xsh) return 1;
++
++ dpy = XOpenDisplay (NULL);
++
++ if (!dpy)
++ return 2;
++
++ fd = ConnectionNumber (dpy);
++
++ screen = DefaultScreen (dpy);
++
++ black = BlackPixel (dpy, screen);
++
++
++ {
++ long mask;
++ XSetWindowAttributes attr;
++
++
++
++ attr.background_pixel = black;
++ attr.border_pixel = black;
++ attr.event_mask = 0;
++ attr.override_redirect = True;
++
++ mask = (CWBackPixel | CWBorderPixel | CWEventMask | CWOverrideRedirect);
++
++ window = XCreateWindow (dpy, RootWindow (dpy, screen), 0, 0,
++ DisplayWidth (dpy, screen), DisplayHeight (dpy,
++ screen),
++ 0, 0, InputOutput, (Visual *) CopyFromParent,
++ mask, &attr);
++ }
++
++ XUnmapWindow (dpy, window);
++
++ XFlush (dpy);
++
++
++
++
++ FD_ZERO (&rfds);
++
++ for (;;)
++ {
++ tv.tv_sec = 1;
++ tv.tv_usec = 0;
++
++int k=xenbus_read();
++switch(k) {
++case 0:
++case 1:
++ state=k;
++}
++
++
++
++
++ if (state!=old_state) {
++ if (state)
++ blank();
++ else
++ unblank();
++
++ old_state=state;
++ XFlush (dpy);
++ XSync(dpy,False);
++ xenbus_write(2);
++ }
++
++ while (tv.tv_sec || tv.tv_usec)
++ {
++ FD_SET (fd, &rfds);
++
++ if (select (fd + 1, &rfds, NULL, NULL, &tv) == 1)
++ {
++ XEvent e;
++ XNextEvent (dpy, &e);
++ }
++
++ }
++
++
++
++
++
++ }
++
++
++
++
++
++ return 0;
++}
+diff --git a/tools/misc/xblanker/version-files b/tools/misc/xblanker/version-files
+new file mode 100644
+index 0000000..dc3d959
+--- /dev/null
++++ b/tools/misc/xblanker/version-files
+@@ -0,0 +1,3 @@
++src/version.c
++src/project.h
++src/xblanker.c
+diff --git a/tools/misc/xblanker/version-major b/tools/misc/xblanker/version-major
+new file mode 100644
+index 0000000..d00491f
+--- /dev/null
++++ b/tools/misc/xblanker/version-major
+@@ -0,0 +1 @@
++1
+diff --git a/tools/misc/xblanker/version-md5sums b/tools/misc/xblanker/version-md5sums
+new file mode 100644
+index 0000000..e69de29
+diff --git a/tools/misc/xblanker/version-micro b/tools/misc/xblanker/version-micro
+new file mode 100644
+index 0000000..573541a
+--- /dev/null
++++ b/tools/misc/xblanker/version-micro
+@@ -0,0 +1 @@
++0
+diff --git a/tools/misc/xblanker/version-minor b/tools/misc/xblanker/version-minor
+new file mode 100644
+index 0000000..573541a
+--- /dev/null
++++ b/tools/misc/xblanker/version-minor
+@@ -0,0 +1 @@
++0