|
[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 |