[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-users] Call schedule set on arinc653 scheduler?
On Fri, May 29, 2015 at 6:45 AM, Mr Idris <mr@xxxxxxxxxxxx> wrote: > 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. What exactly happens here? At least one of the messages should print. Can you try memset(sched.sched_entries[0].dom_handle, 0, sizeof(sched.sched_entries[0].dom_handle))? The arinc653 scheduler is doing a memcmp on the entire array, so the entire thing needs to be cleared. Nate > 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 |