<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>Hi Nick</p>
    <p>In latest version of LITMUS, whether a task is running or not can
      be checked by:</p>
    <p>    <b>task->state == IS_RUNNING</b></p>
    <p><b>is_running(task) </b>function is not available in recent
      LITMUS distributions.</p>
    <p><i>Note</i>: I have ported some LITMUS plug-ins from Linux kernel
      version 3.x to 4.x, and if I remember correctly these are the two
      (including per-CPU macro) kernel-level changes.</p>
    <p>In any case, if you get to see more undefined functions or
      variables, I suggest you to check the diff among the latest LITMUS
      version and the version that the plug-in is written for.<br>
    </p>
    <p><br>
    </p>
    <p>Mahir<br>
    </p>
    <br>
    <div class="moz-cite-prefix">On 10/27/2016 07:52 PM,
      <a class="moz-txt-link-abbreviated" href="mailto:litmus-dev-request@lists.litmus-rt.org">litmus-dev-request@lists.litmus-rt.org</a> wrote:<br>
    </div>
    <blockquote
      cite="mid:mailman.19058.1477590733.6659.litmus-dev@lists.litmus-rt.org"
      type="cite">
      <pre wrap="">Send litmus-dev mailing list submissions to
        <a class="moz-txt-link-abbreviated" href="mailto:litmus-dev@lists.litmus-rt.org">litmus-dev@lists.litmus-rt.org</a>

To subscribe or unsubscribe via the World Wide Web, visit
        <a class="moz-txt-link-freetext" href="https://lists.litmus-rt.org/listinfo/litmus-dev">https://lists.litmus-rt.org/listinfo/litmus-dev</a>
or, via email, send a message with subject or body 'help' to
        <a class="moz-txt-link-abbreviated" href="mailto:litmus-dev-request@lists.litmus-rt.org">litmus-dev-request@lists.litmus-rt.org</a>

You can reach the person managing the list at
        <a class="moz-txt-link-abbreviated" href="mailto:litmus-dev-owner@lists.litmus-rt.org">litmus-dev-owner@lists.litmus-rt.org</a>

When replying, please edit your Subject line so it is more specific
than "Re: Contents of litmus-dev digest..."


Today's Topics:

   1. Re: litmus-dev Digest, Vol 56, Issue 9 (NICHOLAS ALLAN KLEPP)


----------------------------------------------------------------------

Message: 1
Date: Thu, 27 Oct 2016 17:51:33 +0000
From: NICHOLAS ALLAN KLEPP <a class="moz-txt-link-rfc2396E" href="mailto:nickbk@uga.edu"><nickbk@uga.edu></a>
To: <a class="moz-txt-link-rfc2396E" href="mailto:litmus-dev@lists.litmus-rt.org">"litmus-dev@lists.litmus-rt.org"</a> <a class="moz-txt-link-rfc2396E" href="mailto:litmus-dev@lists.litmus-rt.org"><litmus-dev@lists.litmus-rt.org></a>
Subject: Re: [LITMUS^RT] litmus-dev Digest, Vol 56, Issue 9
Message-ID:
        <a class="moz-txt-link-rfc2396E" href="mailto:BL2PR02MB46501F1916EDA6458F3C5AFD5AA0@BL2PR02MB465.namprd02.prod.outlook.com"><BL2PR02MB46501F1916EDA6458F3C5AFD5AA0@BL2PR02MB465.namprd02.prod.outlook.com></a>
        
Content-Type: text/plain; charset="iso-8859-1"

Thank you for your fast response, everybody!


Interestingly, I am still getting the same error even after changing the local_cpu_state() definition from &__get_cpu_var(demo_cpu_state) to this_cpu_ptr(&demo_cpu_state). The implicitly declared function warning for __get_cpu_var() is gone, but the implicitly declared function warning for is_running() is still there, which I find odd.


Can anybody say where is_running() is defined? I'm pretty sure I have the correct headers included, but I may be wrong.


Is there anything else anyone can think of that may be causing this problem?


Thanks! - Nick


________________________________
From: <a class="moz-txt-link-abbreviated" href="mailto:litmus-dev-bounces@lists.litmus-rt.org">litmus-dev-bounces@lists.litmus-rt.org</a> <a class="moz-txt-link-rfc2396E" href="mailto:litmus-dev-bounces@lists.litmus-rt.org"><litmus-dev-bounces@lists.litmus-rt.org></a> on behalf of Mahircan Gul <a class="moz-txt-link-rfc2396E" href="mailto:mahircg@mpi-sws.org"><mahircg@mpi-sws.org></a>
Sent: Wednesday, October 26, 2016 5:57 PM
To: <a class="moz-txt-link-abbreviated" href="mailto:litmus-dev@lists.litmus-rt.org">litmus-dev@lists.litmus-rt.org</a>
Subject: Re: [LITMUS^RT] litmus-dev Digest, Vol 56, Issue 9

Greetings

As mentioned in a previous reply, the issue arises due to changes in
Linux kernel versions. More specifically, macros for accessing the
per-CPU variables has changed between kernel v 3.x to 4.x.

I guess those tutorials were written for the LITMUS version that was
based on Linux 3.x. Therefore, using the old version of macros within
the current kernel version (I'm assuming you are writing the plug-in on
Linux v 4.x) yields to the errors you mentioned.

Changing


        #define local_cpu_state() (&__get_cpu_var(demo_cpu_state))

to (mind the address-of operator)

        #define local_cpu_state() (this_cpu_ptr(&demo_cpu_state))

should take care of the issue.

The change above should get your development process up and running! The
tutorials need to be updated at some point, though.

Mahir

On 10/26/2016 07:09 PM, <a class="moz-txt-link-abbreviated" href="mailto:litmus-dev-request@lists.litmus-rt.org">litmus-dev-request@lists.litmus-rt.org</a> wrote:
</pre>
      <blockquote type="cite">
        <pre wrap="">Send litmus-dev mailing list submissions to
       <a class="moz-txt-link-abbreviated" href="mailto:litmus-dev@lists.litmus-rt.org">litmus-dev@lists.litmus-rt.org</a>

To subscribe or unsubscribe via the World Wide Web, visit
       <a class="moz-txt-link-freetext" href="https://lists.litmus-rt.org/listinfo/litmus-dev">https://lists.litmus-rt.org/listinfo/litmus-dev</a>
or, via email, send a message with subject or body 'help' to
       <a class="moz-txt-link-abbreviated" href="mailto:litmus-dev-request@lists.litmus-rt.org">litmus-dev-request@lists.litmus-rt.org</a>

You can reach the person managing the list at
       <a class="moz-txt-link-abbreviated" href="mailto:litmus-dev-owner@lists.litmus-rt.org">litmus-dev-owner@lists.litmus-rt.org</a>

When replying, please edit your Subject line so it is more specific
than "Re: Contents of litmus-dev digest..."


Today's Topics:

    1. Create a Plugin Tutorial Step 5 (NICHOLAS ALLAN KLEPP)
    2. Re: Create a Plugin Tutorial Step 5 (shijunjie92)


----------------------------------------------------------------------

Message: 1
Date: Wed, 26 Oct 2016 17:01:02 +0000
From: NICHOLAS ALLAN KLEPP <a class="moz-txt-link-rfc2396E" href="mailto:nickbk@uga.edu"><nickbk@uga.edu></a>
To: <a class="moz-txt-link-rfc2396E" href="mailto:litmus-dev@lists.litmus-rt.org">"litmus-dev@lists.litmus-rt.org"</a> <a class="moz-txt-link-rfc2396E" href="mailto:litmus-dev@lists.litmus-rt.org"><litmus-dev@lists.litmus-rt.org></a>
Subject: [LITMUS^RT] Create a Plugin Tutorial Step 5
Message-ID:
       <a class="moz-txt-link-rfc2396E" href="mailto:BL2PR02MB465FD2B01B25792C2378779D5AB0@BL2PR02MB465.namprd02.prod.outlook.com"><BL2PR02MB465FD2B01B25792C2378779D5AB0@BL2PR02MB465.namprd02.prod.outlook.com></a>

Content-Type: text/plain; charset="iso-8859-1"

Hello!


I am following the Create a Plugin Tutorial and I am getting a compilation error after I add the scheduling decision logic in step 5. The error seems to be a problem with the demo_requeue() method. Here is the error message generated on compilation:


litmus/sched_demo.c: In function 'demo_requeue':
litmus/sched_demo.c:32:28: error: dereferencing pointer to incomplete type
        __add_ready(&cpu_state->local_queues,tsk);
                             ^
litmus/sched_demo.c:37:28: error: dereferencing pointer to incomplete type
        add_release(&cpu_state->local_queues,tsk);
                             ^
litmus/sched_demo.c: In function 'demo_schedule':
litmus/sched_demo.c:69:10: error: implicit declaration of function '__get_cpu_var' [-Werror=implicit-function-declaration]
    struct demo_cpu_state *local_state = local_cpu_state();
           ^
litmus/sched_demo.c:14:28: error: lvalue required as unary '&' operand
  #define local_cpu_state() (&__get_cpu_var(demo_cpu_state))
                             ^
litmus/sched_demo.c:69:40: note: in expansion of macro 'local_cpu_state'
    struct demo_cpu_state *local_state = local_cpu_state();
                                         ^
litmus/sched_demo.c:83:3: error: implicit declaration of function 'is_running' [-Werror=implicit-function-declaration]
    self_suspends = exists && !is_running(prev);
    ^
cc1: some warnings being treated as errors
scripts/Makefile.build:258: recipe for target 'litmus/sched_demo.o' failed


In searching the mailing list for similar problems I ran into a thread which did describe the dereferencing pointer to incomplete type error. There are two responses in that thread which I found to be possibly illuminating. One:


On May 7, 2013, at 2:11 PM, Bj?rn Brandenburg <bbb at mpi-sws.org> wrote:

</pre>
        <blockquote type="cite">
          <pre wrap="">On May 7, 2013, at 9:29 AM, Schorr Stefan <stschorr at eit.uni-kl.de> wrote:
</pre>
          <blockquote type="cite">
            <pre wrap="">I'm trying to follow the Create A Plugin Tutorial from the webpage.
The first steps work like a charm, step 4 however doesn't compile :(

I copied the code from the website and I created a new local git
branch, so I'm absolutely sure that the only file I changed - apart
from the Makefile - is sched_demo.c (so I don't understand why
the error messages below point to .h files).

Please give me some hint what goes wrong here...

Best Regards
Stefan


Here's the error I get, when doing make bzImage

In file included from litmus/sched_demo.c:3:
include/litmus/litmus.h:74: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'litmus_clock'
include/litmus/litmus.h: In function 'is_kernel_np':
include/litmus/litmus.h:120: error: dereferencing pointer to incomplete type
</pre>
          </blockquote>
          <pre wrap="">
Hi Stefan,

this is a configuration error in LITMUS^RT. Please enable the configuration option CONFIG_NP_SECTION, which should silence the error. Sorry about that...
</pre>
        </blockquote>
        <pre wrap="">
Actually, litmus/litmus.h already has correct dummy implementations for the !CONFIG_NP_SECTION case, so it's something different. Have you tried a 'make clean'?
- Bj?rn

And two:

</pre>
        <blockquote type="cite">
          <pre wrap="">On 05/07/2013 02:19 PM, Bj?rn Brandenburg wrote:
</pre>
          <blockquote type="cite">
            <pre wrap="">If it doesn't go away, you are probably missing a header file. Here are the one from the reference version. Does it fail with these headers as well?
</pre>
          </blockquote>
          <pre wrap="">Hi Bj?rn,
thanks for the fast reply!
There's no change after make clean.
I paste my C code here:

</pre>
        </blockquote>
        <pre wrap="">Commit c5248a7288e54c2b5e2bba8aa2677772542bf90e compiles for me. Can you please try compiling c5248a7288e54c2b5e2bba8aa2677772542bf90e and, if it doesn't work, send me your configuration?

Thanks,
Bj?rn

I have verified that CONFIG_NP_SECTION is in fact enabled and as well I have run a 'make clean'. My next option was to try to checkout commit c5248a7288e54c2b5e2bba8aa2677772542bf90e, however, this is not allowed for my local repository. The error:

fatal: reference is not a tree: c5248a7288e54c2b5e2bba8aa2677772542bf90e

Is there something else I should do to make this work? Thanks!

- Nick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <a class="moz-txt-link-rfc2396E" href="http://lists.litmus-rt.org/pipermail/litmus-dev/attachments/20161026/4601336b/attachment-0001.html"><http://lists.litmus-rt.org/pipermail/litmus-dev/attachments/20161026/4601336b/attachment-0001.html></a>

------------------------------

Message: 2
Date: Wed, 26 Oct 2016 19:09:08 +0100
From: "shijunjie92" <a class="moz-txt-link-rfc2396E" href="mailto:shijunjie92@gmail.com"><shijunjie92@gmail.com></a>
To: "litmus-dev" <a class="moz-txt-link-rfc2396E" href="mailto:litmus-dev@lists.litmus-rt.org"><litmus-dev@lists.litmus-rt.org></a>
Subject: Re: [LITMUS^RT] Create a Plugin Tutorial Step 5
Message-ID: <a class="moz-txt-link-rfc2396E" href="mailto:5810E331.1010709@gmail.com"><5810E331.1010709@gmail.com></a>
Content-Type: text/plain; charset="utf-8"

Because of the based linux version has been changed, some functions have been reweitten. You need to compare the tutorial with the latest version of LITMUS-RT's plugin (for example sched_pfp.c) . Rewrite the related functions yourself.

2016-10-26

shijunjie92



????NICHOLAS ALLAN KLEPP <a class="moz-txt-link-rfc2396E" href="mailto:nickbk@uga.edu"><nickbk@uga.edu></a>
?????2016-10-26 19:01
???[LITMUS^RT] Create a Plugin Tutorial Step 5
????<a class="moz-txt-link-rfc2396E" href="mailto:litmus-dev@lists.litmus-rt.org">"litmus-dev@lists.litmus-rt.org"</a><a class="moz-txt-link-rfc2396E" href="mailto:litmus-dev@lists.litmus-rt.org"><litmus-dev@lists.litmus-rt.org></a>
???

Hello!



I am following the Create a Plugin Tutorial and I am getting a compilation error after I add the scheduling decision logic in step 5. The error seems to be a problem with the demo_requeue() method. Here is the error message generated on compilation:



litmus/sched_demo.c: In function ?demo_requeue?:
litmus/sched_demo.c:32:28: error: dereferencing pointer to incomplete type
        __add_ready(&cpu_state->local_queues,tsk);
                             ^
litmus/sched_demo.c:37:28: error: dereferencing pointer to incomplete type
        add_release(&cpu_state->local_queues,tsk);
                             ^
litmus/sched_demo.c: In function ?demo_schedule?:
litmus/sched_demo.c:69:10: error: implicit declaration of function ?__get_cpu_var? [-Werror=implicit-function-declaration]
    struct demo_cpu_state *local_state = local_cpu_state();
           ^
litmus/sched_demo.c:14:28: error: lvalue required as unary ?&? operand
  #define local_cpu_state() (&__get_cpu_var(demo_cpu_state))
                             ^
litmus/sched_demo.c:69:40: note: in expansion of macro ?local_cpu_state?
    struct demo_cpu_state *local_state = local_cpu_state();
                                         ^
litmus/sched_demo.c:83:3: error: implicit declaration of function ?is_running? [-Werror=implicit-function-declaration]
    self_suspends = exists && !is_running(prev);
    ^
cc1: some warnings being treated as errors
scripts/Makefile.build:258: recipe for target 'litmus/sched_demo.o' failed



In searching the mailing list for similar problems I ran into a thread which did describe the dereferencing pointer to incomplete type error. There are two responses in that thread which I found to be possibly illuminating. One:



On May 7, 2013, at 2:11 PM, Bj?rn Brandenburg <bbb at mpi-sws.org> wrote:

</pre>
        <blockquote type="cite">
          <pre wrap="">On May 7, 2013, at 9:29 AM, Schorr Stefan <stschorr at eit.uni-kl.de> wrote:
</pre>
          <blockquote type="cite">
            <pre wrap="">I'm trying to follow the Create A Plugin Tutorial from the webpage.
The first steps work like a charm, step 4 however doesn't compile :(

I copied the code from the website and I created a new local git
branch, so I'm absolutely sure that the only file I changed - apart
from the Makefile - is sched_demo.c (so I don't understand why
the error messages below point to .h files).

Please give me some hint what goes wrong here...

Best Regards
Stefan


Here's the error I get, when doing make bzImage

In file included from litmus/sched_demo.c:3:
include/litmus/litmus.h:74: error: expected ?=?, ?,?, ?;?, ?asm? or ?__attribute__? before ?litmus_clock?
include/litmus/litmus.h: In function ?is_kernel_np?:
include/litmus/litmus.h:120: error: dereferencing pointer to incomplete type
</pre>
          </blockquote>
          <pre wrap="">
Hi Stefan,

this is a configuration error in LITMUS^RT. Please enable the configuration option CONFIG_NP_SECTION, which should silence the error. Sorry about that...
</pre>
        </blockquote>
        <pre wrap="">
Actually, litmus/litmus.h already has correct dummy implementations for the !CONFIG_NP_SECTION case, so it's something different. Have you tried a 'make clean'?
- Bj?rn

And two:


</pre>
        <blockquote type="cite">
          <pre wrap="">On 05/07/2013 02:19 PM, Bj?rn Brandenburg wrote:
</pre>
          <blockquote type="cite">
            <pre wrap="">If it doesn't go away, you are probably missing a header file. Here are the one from the reference version. Does it fail with these headers as well?
</pre>
          </blockquote>
          <pre wrap="">Hi Bj?rn,
thanks for the fast reply!
There's no change after make clean.
I paste my C code here:

</pre>
        </blockquote>
        <pre wrap="">Commit c5248a7288e54c2b5e2bba8aa2677772542bf90e compiles for me. Can you please try compiling c5248a7288e54c2b5e2bba8aa2677772542bf90e and, if it doesn't work, send me your configuration?

Thanks,
Bj?rn



I have verified that CONFIG_NP_SECTION is in fact enabled and as well I have run a 'make clean'. My next option was to try to checkout commit c5248a7288e54c2b5e2bba8aa2677772542bf90e, however, this is not allowed for my local repository. The error:

fatal: reference is not a tree: c5248a7288e54c2b5e2bba8aa2677772542bf90e

Is there something else I should do to make this work? Thanks!


- Nick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <a class="moz-txt-link-rfc2396E" href="http://lists.litmus-rt.org/pipermail/litmus-dev/attachments/20161026/6ccba09f/attachment.html"><http://lists.litmus-rt.org/pipermail/litmus-dev/attachments/20161026/6ccba09f/attachment.html></a>

------------------------------

_______________________________________________
litmus-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:litmus-dev@lists.litmus-rt.org">litmus-dev@lists.litmus-rt.org</a>
<a class="moz-txt-link-freetext" href="https://lists.litmus-rt.org/listinfo/litmus-dev">https://lists.litmus-rt.org/listinfo/litmus-dev</a>


End of litmus-dev Digest, Vol 56, Issue 9
*****************************************
</pre>
      </blockquote>
      <pre wrap="">

_______________________________________________
litmus-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:litmus-dev@lists.litmus-rt.org">litmus-dev@lists.litmus-rt.org</a>
<a class="moz-txt-link-freetext" href="https://lists.litmus-rt.org/listinfo/litmus-dev">https://lists.litmus-rt.org/listinfo/litmus-dev</a>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <a class="moz-txt-link-rfc2396E" href="http://lists.litmus-rt.org/pipermail/litmus-dev/attachments/20161027/74d50423/attachment.html"><http://lists.litmus-rt.org/pipermail/litmus-dev/attachments/20161027/74d50423/attachment.html></a>

------------------------------

_______________________________________________
litmus-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:litmus-dev@lists.litmus-rt.org">litmus-dev@lists.litmus-rt.org</a>
<a class="moz-txt-link-freetext" href="https://lists.litmus-rt.org/listinfo/litmus-dev">https://lists.litmus-rt.org/listinfo/litmus-dev</a>


End of litmus-dev Digest, Vol 56, Issue 11
******************************************
</pre>
    </blockquote>
    <br>
  </body>
</html>