[libvirt] alignment of data fields when compiling with mingwin
Matthias Bolte
matthias.bolte at googlemail.com
Sun Oct 17 10:04:06 UTC 2010
2010/10/15 <arnaud.champion at devatom.fr>:
> Hi,
>
> I'm currently working on libvirt csharp bindings, and I have some trouble
> with virConnectOpenAuth marshaling.
> I need to know what is the alignment of data fields in structure when
> compiling with mingwin.
> Anyone know that ?
>
> cheers,
>
> Arnaud Champion
>
Why do you need to know the alignment? Do you need to build or access
members of the virConnectCredential or virConnectAuth structs by
offset in memory?
The Wikipedia article about data structure alignment might be helpful
when you really need to care about alignment.
If you actually need the offset of the members in those structs you
can just use the offsetof macro and let the compiler tell you:
#include <stdio.h>
#include <stddef.h>
#include <libvirt/libvirt.h>
void main(void)
{
printf("virConnectCredential\n");
printf(" type %2u\n", offsetof(virConnectCredential, type));
printf(" prompt %2u\n", offsetof(virConnectCredential, prompt));
printf(" challenge %2u\n", offsetof(virConnectCredential, challenge));
printf(" defresult %2u\n", offsetof(virConnectCredential, defresult));
printf(" result %2u\n", offsetof(virConnectCredential, result));
printf(" resultlen %2u\n", offsetof(virConnectCredential, resultlen));
printf("\n");
printf("virConnectAuth\n");
printf(" credtype %2u\n", offsetof(virConnectAuth, credtype));
printf(" ncredtype %2u\n", offsetof(virConnectAuth, ncredtype));
printf(" cb %2u\n", offsetof(virConnectAuth, cb));
printf(" cbdata %2u\n", offsetof(virConnectAuth, cbdata));
}
Output on x86:
virConnectCredential
type 0
prompt 4
challenge 8
defresult 12
result 16
resultlen 20
virConnectAuth
credtype 0
ncredtype 4
cb 8
cbdata 12
Output on x86_64:
virConnectCredential
type 0
prompt 8
challenge 16
defresult 24
result 32
resultlen 40
virConnectAuth
credtype 0
ncredtype 8
cb 16
cbdata 24
[1] http://en.wikipedia.org/wiki/Data_structure_alignment#Typical_alignment_of_C_structs_on_x86
Matthias
More information about the libvir-list
mailing list