Good day!

I'm trying to bind to libvmmapi.so on Perl. For this purpose I use swig (ported 
to FreeBSD 10). 
All my manipulations I do in the test directory in which you extracted the 
archive src.txz, in the directory /tmp/test/usr/src/lib/libvmmapi/ . 

user# ls

Makefile 
libvmmapi.i 
libvmmapi.pm vmmapi.c
libvmmapi_wrap.c vmmapi.h
vmmapi_freebsd.c

Use the following swig interface file:

%module libvmmapi
%{
#include "vmmapi.h"
%}
%include "vmmapi.h"



Output errors of the following type (File 1):

libvmmapi_wrap.c:2667:24: error: variable has incomplete type
'enum vm_event_type'
enum vm_event_type arg3 ;
^
libvmmapi_wrap.c:2667:10: note: forward declaration of 'enum
vm_event_type'
enum vm_event_type arg3 ;
^
libvmmapi_wrap.c:2698:12: error: cast to incomplete type
'enum vm_event_type'
arg3 = (enum vm_event_type)(val3);
^
libvmmapi_wrap.c:2667:10: note: forward declaration of 'enum
vm_event_type'
enum vm_event_type arg3 ;
^
libvmmapi_wrap.c:2725:24: error: variable has incomplete type
'enum vm_event_type'
enum vm_event_type arg3 ;
^
libvmmapi_wrap.c:2725:10: note: forward declaration of 'enum
vm_event_type'
enum vm_event_type arg3 ;
^
libvmmapi_wrap.c:2759:12: error: cast to incomplete type
'enum vm_event_type'
arg3 = (enum vm_event_type)(val3);
Then,I suggested that enum 'enum vm_event_type' is not defined. Because the 
file vmmapi.c includes vmm.h I found the definition of the enumeration, and 
changed the interface file.

%module libvmmapi
%{
#include "vmmapi.h"
#include "vmm.h"
%}
%include "vmmapi.h"
%include "vmm.h"
Include vmm.h (copying it into the work (test) directory ) had, As it is 
defined enum vm_event_type.

Now we have the error of only one type (File 2):

libvmmapi_wrap.c:2789:45: error: argument type 'enum
vm_event_type' is incomplete
result = (int)vm_inject_event(arg1,arg2,arg3,arg4);
^~~~
./vmmapi.h:65:55: note: forward declaration of 'enum
vm_event_type'
...vmctx *ctx, int vcpu, enum vm_event_type type,
^
libvmmapi_wrap.c:2855:46: error: argument type 'enum
vm_event_type' is incomplete
result = (int)vm_inject_event2(arg1,arg2,arg3,arg4,arg5);
^~~~
./vmmapi.h:67:56: note: forward declaration of 'enum
vm_event_type'
...vmctx *ctx, int vcpu, enum vm_event_type type,
I don't understand why 'arg3' is the argument of incomplete type 'enum 
vm_event_type' announced. Thank you. 
P.S.
I hope the question is not offtopic. -- 
With best regards,  Denis Menshikov

Attachment: 1
Description: Binary data

Attachment: 2
Description: Binary data

_______________________________________________
freebsd-virtualization@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-virtualization
To unsubscribe, send any mail to 
"freebsd-virtualization-unsubscr...@freebsd.org"

Reply via email to