Are you running your program as root?
Yes
_intr_v86() returns -1, right?
Yes
could you provide more complete code?
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <errno.h>
#include <x86/v86.h>
struct _v86reg reg;
int main( void )
{
int i;
memset(®, 0, sizeof(reg));
reg.eax = 0xc301;
reg.ebx = 0x000a;
i=_intr_v86(0x15, ®, NULL, 0);
printf("\n _intr_v86 returns %d\n",i);
return EXIT_SUCCESS;
}
I also made some tests with _intr_v86() plotting pixels. However it
works (outside photon)…
Here the source:
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <errno.h>
#include <x86/v86.h>
struct _v86reg reg;
void setmode()
{
memset(®, 0, sizeof(reg));
reg.eax = 0x0013;
_intr_v86(0x10, ®, NULL, 0);
}
void restore()
{
memset(®, 0, sizeof(reg));
reg.eax = 0x0003;
_intr_v86(0x10, ®, NULL, 0);
}
void pixel(int x, int y)
{
memset(®, 0, sizeof(reg));
reg.eax = 0x0c04;
reg.ecx = x;
reg.edx = y;
_intr_v86(0x10, ®, NULL, 0);
}
int main( void )
{
int i , tmp;
setmode();
for(i=0;i<100;i++)
pixel( i , 50);
sleep(5);
restore();
return EXIT_SUCCESS;
}