[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Help With Custom Hyper Calls



So I greped through the s

I've altered the hypercall_table and hypercall_args_table to have an
additional entry in xen/arch/x86/x86_32/entry.S and in
xen/arch/x86/x86_64/entry.S:

to the hypercall_table:

...........................
         .long do_sysctl             /* 35 */
         .long do_domctl
         .long do_kexec_op
         .long do_tmem_op
         .long do_new_hyper          /* 39 */
...........................

to the hypercall_args_table:

...........................
         .byte 1 /* do_sysctl            */  /* 35 */
         .byte 1 /* do_domctl            */
         .byte 2 /* do_kexec_op          */
         .byte 1 /* do_tmem_op           */
         .byte 0 /* do_new_hyper         */  /* 39 */
...........................


I've also registered the name in xen/include/public/xen.h

...........................
#define __HYPERVISOR_new_hyper            39
...........................

and I've added the following function to xen/arch/x86/mm.c

...........................
void do_new_hyper ( void )
{
      printk("NEW HYPERCALL RECEIVED\n");
}
...........................

To test this, I am running a fedora 14 dom0 and I wrote the following
kernel module (so the code runs in ring 1):

...........................
#include <linux/init.h>
#include <linux/module.h>
#include <linux/fs.h>

MODULE_LICENSE("GPL");

#define SUCCESS 0

static int hyper_init(void){

  int output;

  printk(KERN_ALERT "Testing Hypercall\n");

  __asm__ ( "movl $39, %%eax;"
            "int $0x82;"
          : "=a" (output)
          );

  return SUCCESS;
}

static void hyper_exit(void){
  printk(KERN_ALERT "Removing Hypercall Module");


}

module_init(hyper_init);
module_exit(hyper_exit);
...........................

I then run "xm dmesg" to see if I can see the "NEW HYPERCALL RECEIVED"
message, but nothing appears.  Any thoughts?

- John


On 08/12/2011 12:02 PM, Keir Fraser wrote:
> On 12/08/2011 17:19, "John Backes" <john.backes@xxxxxxxxxxxxxxxxx> wrote:
> 
>> Hello,
>>
>> So I'm new to Xen development and want to play around with Xen
>> Hypercalls, but havn't been able to find a whole lot of documentation
>> related to creating custom Hypercalls.  I've found that to create a
>> custom Hypercall I need to define it with an unused Hypercall number in
>> "xen/include/public/xen.h", but then I am unsure of the next steps
>> (e.g., where to place the function to call with the Hypercall).
>>
>> Can anyone point more towards some documentation or at least towards the
>> correct locations for registering new Hypercalls?  Thanks in advance.
> 
> Pick the name of a hypercall, e.g., update_va_mapping has a nice distinctive
> name. Recursive grep for that name in the Xen and Linux source trees. Should
> give you a pretty good start on the few places you need to register in the
> hypervisor and in the guest kernel.
> 
>  -- Keir
> 
>> - John
>>
>> _______________________________________________
>> Xen-devel mailing list
>> Xen-devel@xxxxxxxxxxxxxxxxxxx
>> http://lists.xensource.com/xen-devel
> 
> 
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.