WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Xen

xen-devel

[Top] [All Lists]

[Xen-devel] [PATCH 3/4] xencomm take 2: linux side introduce struct xenc

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH 3/4] xencomm take 2: linux side introduce struct xencomm_handle *
From: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
Date: 2007年8月13日 12:59:10 +0900
Cc: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>, xen-ia64-devel@xxxxxxxxxxxxxxxxxxx, xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: 2007年8月12日 21:00:33 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.4.2.1i
# HG changeset patch
# User yamahata@xxxxxxxxxxxxx
# Date 1186473244 -32400
# Node ID 7b88b56c310b11abe510cf32fc5095bc98979168
# Parent 06791935b2cb9d69e94ca89ca8febcda627017b2
[xencomm] introduce opaque type struct xencomm_handle* for xencommized value
This patch is preparation for xencomm consolidation.
powerpc uses void * for xencommized value, on the other hand IA64 uses
struct xencomm_handle *. Unify it with struct xencomm_handle *.
PATCHNAME: introduce_xencomm_handle
Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
diff -r 06791935b2cb -r 7b88b56c310b arch/powerpc/platforms/xen/hcall.c
--- a/arch/powerpc/platforms/xen/hcall.c Mon Aug 13 12:17:04 2007 +0900
+++ b/arch/powerpc/platforms/xen/hcall.c Tue Aug 07 16:54:04 2007 +0900
@@ -56,7 +56,7 @@
 
 int HYPERVISOR_console_io(int cmd, int count, char *str)
 {
- void *desc;
+ struct xencomm_handle *desc;
 int rc;
 
 desc = xencomm_map_no_alloc(str, count);
@@ -76,7 +76,8 @@ int HYPERVISOR_event_channel_op(int cmd,
 {
 int rc;
 
- void *desc = xencomm_map_no_alloc(op, sizeof(evtchn_op_t));
+ struct xencomm_handle *desc =
+ xencomm_map_no_alloc(op, sizeof(evtchn_op_t));
 if (desc == NULL)
 return -EINVAL;
 
@@ -92,7 +93,7 @@ EXPORT_SYMBOL(HYPERVISOR_event_channel_o
 
 int HYPERVISOR_xen_version(int cmd, void *arg)
 {
- void *desc;
+ struct xencomm_handle *desc;
 const unsigned long hcall = __HYPERVISOR_xen_version;
 int argsize;
 int rc;
@@ -144,7 +145,8 @@ EXPORT_SYMBOL(HYPERVISOR_xen_version);
 
 int HYPERVISOR_physdev_op(int cmd, void *op)
 {
- void *desc = xencomm_map_no_alloc(op, sizeof(physdev_op_t));
+ struct xencomm_handle *desc =
+ xencomm_map_no_alloc(op, sizeof(physdev_op_t));
 int rc;
 
 if (desc == NULL)
@@ -163,8 +165,8 @@ int HYPERVISOR_sched_op(int cmd, void *a
 {
 int argsize = 0;
 int rc = -EINVAL;
- void *desc;
- evtchn_port_t *ports = NULL;
+ struct xencomm_handle *desc;
+ struct xencomm_handle *ports = NULL;
 
 switch (cmd) {
 case SCHEDOP_yield:
@@ -187,7 +189,7 @@ int HYPERVISOR_sched_op(int cmd, void *a
 if (ports == NULL)
 return -ENOMEM;
 
- set_xen_guest_handle(sched_poll.ports, ports);
+ set_xen_guest_handle(sched_poll.ports, (evtchn_port_t *)ports);
 memcpy(arg, &sched_poll, sizeof(sched_poll));
 
 }
@@ -222,7 +224,7 @@ int HYPERVISOR_suspend(unsigned long sre
 struct sched_shutdown sched_shutdown = {
 .reason = SHUTDOWN_suspend,
 };
- void *desc;
+ struct xencomm_handle *desc;
 
 desc = xencomm_map_no_alloc(&sched_shutdown, sizeof(struct 
sched_shutdown));
 
@@ -234,7 +236,7 @@ int HYPERVISOR_kexec_op(unsigned long op
 int HYPERVISOR_kexec_op(unsigned long op, void *args)
 {
 unsigned long argsize;
- void *desc;
+ struct xencomm_handle *desc;
 
 switch (op) {
 case KEXEC_CMD_kexec_get_range:
@@ -316,8 +318,8 @@ static int xenppc_privcmd_domctl(privcmd
 {
 xen_domctl_t kern_op;
 xen_domctl_t __user *user_op = (xen_domctl_t __user *)hypercall->arg[0];
- void *op_desc;
- void *desc = NULL;
+ struct xencomm_handle *op_desc;
+ struct xencomm_handle *desc = NULL;
 int ret = 0;
 
 if (copy_from_user(&kern_op, user_op, sizeof(xen_domctl_t)))
@@ -349,7 +351,7 @@ static int xenppc_privcmd_domctl(privcmd
 ret = -ENOMEM;
 
 set_xen_guest_handle(kern_op.u.getmemlist.buffer,
- desc);
+ (void *)desc);
 break;
 case XEN_DOMCTL_getpageframeinfo:
 break;
@@ -362,7 +364,7 @@ static int xenppc_privcmd_domctl(privcmd
 ret = -ENOMEM;
 
 set_xen_guest_handle(kern_op.u.getpageframeinfo2.array,
- desc);
+ (void *)desc);
 break;
 case XEN_DOMCTL_shadow_op:
 
@@ -376,7 +378,7 @@ static int xenppc_privcmd_domctl(privcmd
 ret = -ENOMEM;
 
 set_xen_guest_handle(kern_op.u.shadow_op.dirty_bitmap,
- desc);
+ (void *)desc);
 }
 break;
 case XEN_DOMCTL_max_mem:
@@ -391,7 +393,7 @@ static int xenppc_privcmd_domctl(privcmd
 ret = -ENOMEM;
 
 set_xen_guest_handle(kern_op.u.vcpucontext.ctxt,
- desc);
+ (void *)desc);
 break;
 case XEN_DOMCTL_getvcpuinfo:
 break;
@@ -405,7 +407,7 @@ static int xenppc_privcmd_domctl(privcmd
 ret = -ENOMEM;
 
 set_xen_guest_handle(kern_op.u.vcpuaffinity.cpumap.bitmap,
- desc);
+ (void *)desc);
 break;
 case XEN_DOMCTL_max_vcpus:
 case XEN_DOMCTL_scheduler_op:
@@ -442,8 +444,8 @@ static int xenppc_privcmd_sysctl(privcmd
 {
 xen_sysctl_t kern_op;
 xen_sysctl_t __user *user_op = (xen_sysctl_t __user *)hypercall->arg[0];
- struct xencomm_desc *op_desc;
- void *desc = NULL;
+ struct xencomm_handle *op_desc;
+ struct xencomm_handle *desc = NULL;
 int ret = 0;
 
 if (copy_from_user(&kern_op, user_op, sizeof(xen_sysctl_t)))
@@ -470,7 +472,7 @@ static int xenppc_privcmd_sysctl(privcmd
 ret = -ENOMEM;
 
 set_xen_guest_handle(kern_op.u.readconsole.buffer,
- desc);
+ (void *)desc);
 break;
 case XEN_SYSCTL_tbuf_op:
 case XEN_SYSCTL_physinfo:
@@ -491,7 +493,7 @@ static int xenppc_privcmd_sysctl(privcmd
 ret = -ENOMEM;
 
 set_xen_guest_handle(kern_op.u.getdomaininfolist.buffer,
- desc);
+ (void *)desc);
 break;
 default:
 printk(KERN_ERR "%s: unknown sysctl cmd %d\n", __func__, 
kern_op.cmd);
@@ -517,8 +519,8 @@ static int xenppc_privcmd_platform_op(pr
 xen_platform_op_t kern_op;
 xen_platform_op_t __user *user_op =
 (xen_platform_op_t __user *)hypercall->arg[0];
- void *op_desc;
- void *desc = NULL;
+ struct xencomm_handle *op_desc;
+ struct xencomm_handle *desc = NULL;
 int ret = 0;
 
 if (copy_from_user(&kern_op, user_op, sizeof(xen_platform_op_t)))
@@ -566,7 +568,7 @@ int HYPERVISOR_memory_op(unsigned int cm
 int HYPERVISOR_memory_op(unsigned int cmd, void *arg)
 {
 int ret;
- void *op_desc;
+ struct xencomm_handle *op_desc;
 xen_memory_reservation_t *mop;
 
 
@@ -581,7 +583,7 @@ int HYPERVISOR_memory_op(unsigned int cm
 case XENMEM_increase_reservation:
 case XENMEM_decrease_reservation:
 case XENMEM_populate_physmap: {
- void *desc = NULL;
+ struct xencomm_handle *desc = NULL;
 
 if (xen_guest_handle(mop->extent_start)) {
 desc = xencomm_map(
@@ -595,7 +597,7 @@ int HYPERVISOR_memory_op(unsigned int cm
 }
 
 set_xen_guest_handle(mop->extent_start,
- desc);
+ (void *)desc);
 }
 
 ret = plpar_hcall_norets(XEN_MARK(__HYPERVISOR_memory_op),
@@ -650,7 +652,7 @@ static int xenppc_privcmd_version(privcm
 
 static int xenppc_privcmd_event_channel_op(privcmd_hypercall_t *hypercall)
 {
- struct xencomm_desc *desc;
+ struct xencomm_handle *desc;
 unsigned int argsize;
 int ret;
 
@@ -856,7 +858,7 @@ int HYPERVISOR_vcpu_op(int cmd, int vcpu
 {
 int argsize;
 const unsigned long hcall = __HYPERVISOR_vcpu_op;
- void *desc;
+ struct xencomm_handle *desc;
 int rc;
 
 switch (cmd) {
diff -r 06791935b2cb -r 7b88b56c310b drivers/xen/core/xencomm.c
--- a/drivers/xen/core/xencomm.c Mon Aug 13 12:17:04 2007 +0900
+++ b/drivers/xen/core/xencomm.c Tue Aug 07 16:54:04 2007 +0900
@@ -83,7 +83,7 @@ static struct xencomm_desc *xencomm_allo
 return desc;
 }
 
-void xencomm_free(void *desc)
+void xencomm_free(struct xencomm_handle *desc)
 {
 if (desc && !((ulong)desc & XENCOMM_INLINE_FLAG))
 free_page((unsigned long)__va(desc));
@@ -114,7 +114,7 @@ static int xencomm_create(void *buffer, 
 rc = xencomm_init(desc, buffer, bytes);
 if (rc) {
 printk("%s failure: %d\n", "xencomm_init", rc);
- xencomm_free((void *)__pa(desc));
+ xencomm_free((struct xencomm_handle *)__pa(desc));
 return rc;
 }
 
@@ -131,7 +131,7 @@ static int is_phys_contiguous(unsigned l
 return (addr < VMALLOC_START) || (addr >= VMALLOC_END);
 }
 
-static void *xencomm_create_inline(void *ptr)
+static struct xencomm_handle *xencomm_create_inline(void *ptr)
 {
 unsigned long paddr;
 
@@ -139,7 +139,7 @@ static void *xencomm_create_inline(void 
 
 paddr = (unsigned long)xencomm_pa(ptr);
 BUG_ON(paddr & XENCOMM_INLINE_FLAG);
- return (void *)(paddr | XENCOMM_INLINE_FLAG);
+ return (struct xencomm_handle *)(paddr | XENCOMM_INLINE_FLAG);
 }
 
 /* "mini" routine, for stack-based communications: */
@@ -161,7 +161,7 @@ static int xencomm_create_mini(void *buf
 return rc;
 }
 
-void *xencomm_map(void *ptr, unsigned long bytes)
+struct xencomm_handle *xencomm_map(void *ptr, unsigned long bytes)
 {
 int rc;
 struct xencomm_desc *desc;
@@ -177,7 +177,7 @@ void *xencomm_map(void *ptr, unsigned lo
 return xencomm_pa(desc);
 }
 
-void *__xencomm_map_no_alloc(void *ptr, unsigned long bytes, 
+struct xencomm_handle *__xencomm_map_no_alloc(void *ptr, unsigned long bytes, 
 struct xencomm_mini *xc_desc)
 {
 int rc;
diff -r 06791935b2cb -r 7b88b56c310b include/xen/xencomm.h
--- a/include/xen/xencomm.h Mon Aug 13 12:17:04 2007 +0900
+++ b/include/xen/xencomm.h Tue Aug 07 16:54:04 2007 +0900
@@ -30,10 +30,14 @@ struct xencomm_mini {
 uint64_t address[XENCOMM_MINI_ADDRS];
 };
 
-extern void xencomm_free(void *desc);
-extern void *xencomm_map(void *ptr, unsigned long bytes);
-extern void *__xencomm_map_no_alloc(void *ptr, unsigned long bytes, 
- struct xencomm_mini *xc_area);
+/* To avoid additionnal virt to phys conversion, an opaque structure is
+ presented. */
+struct xencomm_handle;
+
+extern void xencomm_free(struct xencomm_handle *desc);
+extern struct xencomm_handle *xencomm_map(void *ptr, unsigned long bytes);
+extern struct xencomm_handle *__xencomm_map_no_alloc(void *ptr,
+ unsigned long bytes, struct xencomm_mini *xc_area);
 
 #if 0
 #define XENCOMM_MINI_ALIGNED(xc_desc, n) \

Attachment: 158_7b88b56c310b_introduce_xencomm_handle.patch
Description: Text Data

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH 3/4] xencomm take 2: linux side introduce struct xencomm_handle *, Isaku Yamahata <=
Previous by Date: [Xen-devel] [PATCH 2/4] xencomm take 2: linux side various fixes and preparation for consolidation , Isaku Yamahata
Next by Date: [Xen-devel] [PATCH 1/4] xencomm take 2: xen side varisous fixes and preparation for consolidation , Isaku Yamahata
Previous by Thread: [Xen-devel] [PATCH 2/4] xencomm take 2: linux side various fixes and preparation for consolidation , Isaku Yamahata
Next by Thread: [Xen-devel] [PATCH 1/4] xencomm take 2: xen side varisous fixes and preparation for consolidation , Isaku Yamahata
Indexes: [Date] [Thread] [Top] [All Lists]

Copyright ©, Citrix Systems Inc. All rights reserved. Legal and Privacy
Citrix This site is hosted by Citrix

AltStyle によって変換されたページ (->オリジナル) /