[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-users] Call schedule set on arinc653 scheduler?
Hi, On 5/28/15, Nathan Studer <nate.studer@xxxxxxxxx> wrote: >> I write small program to call arinc653, it gives me no error when i >> compiled with parameter -lxenctrl and -luuid. When i run it, it works >> fine like i set variable to xc_sched_xfair_schedule_set(xci, 0, >> &sched); and when it's correct will give true. But still when i check >> 'xl list' still no state running on VM. >> >> Name ID Mem VCPUs State >> Time(s) >> Domain-0 0 6258 1 r----- >> 370.1 >> Debian 3 512 1 ------ >> 0.0 >> > > Are you sure you have the Debian VM's UUID right? Can you run "xl > list -v" to confirm the UUID below? > here is "xl list -v" Name ID Mem VCPUs State Time(s) UUID Reason-Code Security Label Domain-0 0 6771 1 r----- 176.2 00000000-0000-0000-0000-000000000000 - - Debian 3 512 1 ------ 0.0 938b9c5b-8d9d-402a-9be0-0e0cc4cf67dc - - >> Here is the arinc653_schedule_set >> >> #include <stdio.h> >> #include <xenctrl.h> >> #include <uuid/uuid.h> >> >> int main() >> { >> struct xen_sysctl_arinc653_schedule sched; >> xc_interface *xci = xc_interface_open(NULL, NULL, 0); >> int i; >> >> /* initialize major frame and number of minor frames */ >> sched.major_frame = 0; >> sched.num_sched_entries = 2; >> >> uuid_parse("", sched.sched_entries[0].dom_handle); > > uuid_parse fails when given a null string, so > sched.sched_entries[0].dom_handle is likely junk. You can use > uuid_clear(sched.sched_entries[0].dom_handle) instead to set this > handle to the NULL string. > >> sched.sched_entries[0].vcpu_id = 0; >> sched.sched_entries[0].runtime = 10; >> sched.major_frame += sched.sched_entries[0].runtime; >> >> uuid_parse("938b9c5b-8d9d-402a-9be0-0e0cc4cf67dc", >> sched.sched_entries[1].dom_handle); >> sched.sched_entries[1].vcpu_id = 0; >> sched.sched_entries[1].runtime = 10; >> sched.major_frame += sched.sched_entries[1].runtime; >> >> i = xc_sched_arinc653_schedule_set(xci, 0, &sched); >> if (i) >> { >> printf("true\n"); >> } else { >> printf("false\n"); >> } > > Your print statement is somewhat misleading here, since > xc_sched_arinc653_schedule_set returns 0 on success and something else > on failure not true/false. > >> return 0; >> } >> >> interestingly when i run this program suddenly the dom0 hang but when >> i make num_sched_entries bigger than 2, it runs and give me true >> message. > > If sched.sched_entries[0].dom_handle has junk, it will hang because > dom0 does not have a slice. > > If the only thing that you are changing is num_sched_entries than it's > unlikely that the schedule you are loading is valid, which would > result in the schedule being rejected and an error being returned. > The "true" output would seem to confirm this. > > Nate > >> >> Does anyone have any idea what change I need to make to get the scheduler >> to run >> the VM? I appreciate the help. >> >> Thanks, >> Idris >> >> _______________________________________________ >> Xen-users mailing list >> Xen-users@xxxxxxxxxxxxx >> http://lists.xen.org/xen-users > I tried using 'uuid_clear(sched.sched_entries[0].dom_handle);' or 'uuid_parse("00000000-0000-0000-0000-000000000000", sched.sched_entries[0].dom_handle);' both make computer hang. I also tried using 'strncpy((char *)sched.sched_entries[0].dom_handle, dom0_str, sizeof(sched.sched_entries[0].dom_handle));' it gives me nothing either computer hang or message true/false or VM run. Yes, thank you. My mistake about return value xc_sched_arinc653_schedule_set and num_sched_entries. I changed to 'if(!i)'. Thanks, Idris _______________________________________________ Xen-users mailing list Xen-users@xxxxxxxxxxxxx http://lists.xen.org/xen-users
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |