|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen-access: Do not use ERROR out of xc handle scope
Hi,
At 20:15 +0000 on 17 Mar (1395083738), Aravindh Puthiyaparambil (aravindp)
wrote:
> In places where xc handle is not in scope, use standard printf to display
> errors.
>
> Signed-off-by: Aravindh Puthiyaparambil <aravindp@xxxxxxxxx>
> Cc: Tim Deegan <tim@xxxxxxx>
This is OK as far as it goes, but this code should not be using
ERROR() &c at all -- those are libxc internals, and since we're not
providing a logger argument or any flags to xc_interface_open, I don't
think they do anything useful here. How about something like this
(compile-tested only):
---8<----
tools/xen-access: don't use libxc internals directly.
Signed-off-by: Tim Deegan <tim@xxxxxxx>
diff --git a/tools/tests/xen-access/xen-access.c
b/tools/tests/xen-access/xen-access.c
index b00c05a..4ca0782 100644
--- a/tools/tests/xen-access/xen-access.c
+++ b/tools/tests/xen-access/xen-access.c
@@ -26,23 +26,24 @@
* DEALINGS IN THE SOFTWARE.
*/
+#include <errno.h>
#include <inttypes.h>
#include <stdlib.h>
#include <stdarg.h>
#include <stdbool.h>
+#include <string.h>
#include <time.h>
#include <signal.h>
#include <unistd.h>
+#include <sys/mman.h>
#include <sys/poll.h>
-#include <xc_private.h>
-#include <xg_save_restore.h>
+#include <xenctrl.h>
#include <xen/mem_event.h>
-//#if 0
-#undef DPRINTF
-#define DPRINTF(a, b...) fprintf(stderr, a, ## b)
-//#endif
+#define DPRINTF(a, b...) fprintf(stderr, a "\n", ## b)
+#define ERROR(a, b...) fprintf(stderr, a "\n", ## b)
+#define PERROR(a, b...) fprintf(stderr, a ": %s\n", ## b, strerror(errno))
/* Spinlock and mem event definitions */
@@ -104,17 +105,9 @@ typedef struct mem_event {
spinlock_t ring_lock;
} mem_event_t;
-typedef struct xc_platform_info {
- unsigned long max_mfn;
- unsigned long hvirt_start;
- unsigned int pt_levels;
- unsigned int guest_width;
-} xc_platform_info_t;
-
typedef struct xenaccess {
xc_interface *xc_handle;
- xc_platform_info_t *platform_info;
xc_domaininfo_t *domain_info;
mem_event_t mem_event;
@@ -178,7 +171,7 @@ int xenaccess_teardown(xc_interface *xch, xenaccess_t
*xenaccess)
/* Tear down domain xenaccess in Xen */
if ( xenaccess->mem_event.ring_page )
- munmap(xenaccess->mem_event.ring_page, PAGE_SIZE);
+ munmap(xenaccess->mem_event.ring_page, XC_PAGE_SIZE);
if ( mem_access_enable )
{
@@ -219,7 +212,6 @@ int xenaccess_teardown(xc_interface *xch, xenaccess_t
*xenaccess)
}
xenaccess->xc_handle = NULL;
- free(xenaccess->platform_info);
free(xenaccess->domain_info);
free(xenaccess);
@@ -328,32 +320,13 @@ xenaccess_t *xenaccess_init(xc_interface **xch_r, domid_t
domain_id)
SHARED_RING_INIT((mem_event_sring_t *)xenaccess->mem_event.ring_page);
BACK_RING_INIT(&xenaccess->mem_event.back_ring,
(mem_event_sring_t *)xenaccess->mem_event.ring_page,
- PAGE_SIZE);
+ XC_PAGE_SIZE);
/* Now that the ring is set, remove it from the guest's physmap */
if ( xc_domain_decrease_reservation_exact(xch,
xenaccess->mem_event.domain_id, 1, 0, &ring_pfn) )
PERROR("Failed to remove ring from guest physmap");
- /* Get platform info */
- xenaccess->platform_info = malloc(sizeof(xc_platform_info_t));
- if ( xenaccess->platform_info == NULL )
- {
- ERROR("Error allocating memory for platform info");
- goto err;
- }
-
- rc = get_platform_info(xenaccess->xc_handle, domain_id,
- &xenaccess->platform_info->max_mfn,
- &xenaccess->platform_info->hvirt_start,
- &xenaccess->platform_info->pt_levels,
- &xenaccess->platform_info->guest_width);
- if ( rc != 1 )
- {
- ERROR("Error getting platform info");
- goto err;
- }
-
/* Get domaininfo */
xenaccess->domain_info = malloc(sizeof(xc_domaininfo_t));
if ( xenaccess->domain_info == NULL )
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |