* configure.in: checking xenstore library, error out on missing libs

* include/libxen.h src/libxen.c src/libxen_sym.version: adding new
  entry points
Daniel
This commit is contained in:
Daniel Veillard 2005-11-23 07:47:13 +00:00
parent afcb25b9a5
commit aa60580097
5 changed files with 88 additions and 11 deletions

View File

@ -1,3 +1,9 @@
Tue Nov 22 17:09:11 CET 2005 Daniel Veillard <veillard@redhat.com>
* configure.in: checking xenstore library, error out on missing libs
* include/libxen.h src/libxen.c src/libxen_sym.version: adding new
entry points
Thu Nov 10 17:11:03 CET 2005 Daniel Veillard <veillard@redhat.com> Thu Nov 10 17:11:03 CET 2005 Daniel Veillard <veillard@redhat.com>
* src/makefile.am src/libxen.c src/xensh.c: add a small tool sensh, * src/makefile.am src/libxen.c src/xensh.c: add a small tool sensh,

View File

@ -48,6 +48,7 @@ test "x$U" != "x" && AC_MSG_ERROR(Compiler not ANSI compliant)
AM_PROG_LIBTOOL AM_PROG_LIBTOOL
dnl search for the low level Xen library dnl search for the low level Xen library
AC_SEARCH_LIBS(xc_domain_create, [xenctrl]) AC_SEARCH_LIBS(xc_domain_create, [xenctrl], [], [AC_MSG_ERROR([Xen control library not found])])
AC_SEARCH_LIBS(xs_read, [xenstore], [], [AC_MSG_ERROR([Xen store library not found])])
AC_OUTPUT(Makefile src/Makefile include/Makefile libxen.pc libxen.spec) AC_OUTPUT(Makefile src/Makefile include/Makefile libxen.pc libxen.spec)

View File

@ -73,7 +73,8 @@ xenDomainPtr xenCreateLinuxDomain (xenConnectPtr conn,
const char *cmdline, const char *cmdline,
unsigned long memory, unsigned long memory,
unsigned int flags); unsigned int flags);
xenDomainPtr xenLookupDomain (xenConnectPtr conn,
const char *name);
int xenDestroyDomain (xenDomainPtr domain); int xenDestroyDomain (xenDomainPtr domain);
/* /*
@ -85,6 +86,8 @@ int xenResumeDomain (xenDomainPtr domain);
/* /*
* Dynamic control of domains * Dynamic control of domains
*/ */
const char * xenGetName (xenDomainPtr domain);
unsigned long xenGetMaxMemory (xenDomainPtr domain);
int xenSetMaxMemory (xenDomainPtr domain, int xenSetMaxMemory (xenDomainPtr domain,
unsigned long memory); unsigned long memory);

View File

@ -31,6 +31,7 @@
struct _xenConnect { struct _xenConnect {
unsigned int magic; /* specific value to check */ unsigned int magic; /* specific value to check */
int handle; /* internal handle used for hypercall */ int handle; /* internal handle used for hypercall */
int xshandle; /* handle to talk to the xenstore */
}; };
/** /**
@ -38,28 +39,37 @@ struct _xenConnect {
* @name: optional argument currently unused, pass NULL * @name: optional argument currently unused, pass NULL
* *
* This function should be called first to get a connection to the * This function should be called first to get a connection to the
* Hypervisor * Hypervisor and xen store
* *
* Returns a pointer to the hypervisor connection or NULL in case of error * Returns a pointer to the hypervisor connection or NULL in case of error
*/ */
xenConnectPtr xenConnectPtr
xenOpenConnect(const char *name) { xenOpenConnect(const char *name) {
xenConnectPtr ret; xenConnectPtr ret;
int handle; int handle = -1;
int xshandle = -1;
handle = xc_interface_open(); handle = xc_interface_open();
if (handle == -1) { if (handle == -1)
return(NULL); goto failed;
} xshandle = xs_daemon_open();
if (xshandle < 0)
goto failed;
ret = (xenConnectPtr) malloc(sizeof(xenConnect)); ret = (xenConnectPtr) malloc(sizeof(xenConnect));
if (ret == NULL) { if (ret == NULL)
xc_interface_close(handle); goto failed;
return(NULL);
}
ret->magic = XEN_CONNECT_MAGIC; ret->magic = XEN_CONNECT_MAGIC;
ret->handle = handle; ret->handle = handle;
ret->xshandle = xshandle;
return(ret); return(ret);
failed:
if (handle >= 0)
xc_interface_close(handle);
if (xshandle >= 0)
xs_daemon_close(xshandle);
return(NULL);
} }
/** /**
@ -79,6 +89,8 @@ xenCloseConnect(xenConnectPtr conn) {
return(-1); return(-1);
conn->magic = -1; conn->magic = -1;
xs_daemon_close(conn->xshandle);
conn->xshandle = -1;
xc_interface_close(conn->handle); xc_interface_close(conn->handle);
conn->handle = -1; conn->handle = -1;
free(conn); free(conn);
@ -122,6 +134,23 @@ xenCreateLinuxDomain(xenConnectPtr conn, const char *kernel_path,
return(NULL); return(NULL);
} }
/**
* xenLookupDomain:
* @conn: pointer to the hypervisor connection
* @name: name for the domain
*
* Try to lookup a domain on the given hypervisor
*
* Returns a new domain object or NULL in case of failure
*/
xenDomainPtr
xenLookupDomain(xenConnectPtr conn, const char *name) {
if ((conn == NULL) || (name == NULL))
return(NULL);
TODO
return(NULL);
}
/** /**
* xenDestroyDomain: * xenDestroyDomain:
* @domain: a domain object * @domain: a domain object
@ -175,6 +204,41 @@ xenResumeDomain(xenDomainPtr domain) {
return(-1); return(-1);
} }
/**
* xenGetName:
* @domain: a domain object
*
* Get the public name for that domain
*
* Returns a pointer to the name or NULL, the string need not be deallocated
* its lifetime will be the same as the domain object.
*/
const char *
xenGetName(xenDomainPtr domain) {
if (domain == NULL)
return(NULL);
TODO
return(NULL);
}
/**
* xenGetMaxMemory:
* @domain: a domain object or NULL
*
* Retrieve the maximum amount of physical memory allocated to a
* domain. If domain is NULL, then this get the amount of memory reserved
* to Domain0 i.e. the domain where the application runs.
*
* Returns the memory size in kilobytes or 0 in case of error.
*/
unsigned long
xenGetMaxMemory(xenDomainPtr domain) {
if (domain == NULL)
return(0);
TODO
return(0);
}
/** /**
* xenSetMaxMemory: * xenSetMaxMemory:
* @domain: a domain object or NULL * @domain: a domain object or NULL

View File

@ -4,9 +4,12 @@
xenCloseConnect; xenCloseConnect;
xenGetVersion; xenGetVersion;
xenCreateLinuxDomain; xenCreateLinuxDomain;
xenLookupDomain;
xenDestroyDomain; xenDestroyDomain;
xenSuspendDomain; xenSuspendDomain;
xenResumeDomain; xenResumeDomain;
xenGetName;
xenGetMaxMemory;
xenSetMaxMemory; xenSetMaxMemory;
local: *; local: *;
}; };