From: Mark Hounschell <dmarkh@cfl.rr.com>
To: Monica Puig-Pey <puigpeym@unican.es>
Cc: dmarkh@cfl.rr.com, markh@compro.net,
Rolando Martins <rolando.martins@gmail.com>,
linux-rt-users@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: Changing Kernel thread priorities
Date: Tue, 07 Jun 2011 05:46:14 -0400 [thread overview]
Message-ID: <4DEDF366.6000706@cfl.rr.com> (raw)
In-Reply-To: <4DEDEBFF.10907@cfl.rr.com>
On 06/07/2011 05:14 AM, Mark Hounschell wrote:
> On 06/07/2011 04:40 AM, Monica Puig-Pey wrote:
>> El 06/06/11 18:49, Mark Hounschell escribió:
>>> On 06/06/2011 07:58 AM, Monica Puig-Pey wrote:
>>>> El 06/06/11 13:54, Rolando Martins escribió:
>>>>> Hi,
>>>>> I use the following:
>>>>>
>>>>> PIDs=$(ps -eLo pid,cls,rtprio,pri,nice,cmd | grep -i "irq" | awk '{
>>>>> print $1; }' | xargs echo)
>>>>> for i in $PIDs
>>>>> do
>>>>> ret=$(chrt -f -p 99 $i)
>>>>> done
>>>>>
>>>>> This will change the kernel thread associated with an irq handler to
>>>>> RT FIFO prio 99.
>>>>> Just change the script to your specific interrupt.
>>>>>
>>>>> Hope it helps,
>>>>> Rolando
>>>>>
>>>>> On Mon, Jun 6, 2011 at 12:47 PM, Monica Puig-Pey<puigpeym@unican.es>
>>>>> wrote:
>>>>>> I am writing a driver which has one kernel thread associated with it.
>>>>>> I want to change the priority of this thread, so that I can specify the
>>>>>> order in which it is scheduled following an interrupt.
>>>>>> I'm using:
>>>>>>
>>>>>> sched_setscheduler(struct task_struct *, int, struct sched_param *);
>>>>>>
>>>>>> but it doesn't work. I tried to change the priority from the
>>>>>> init_module,
>>>>>> and also from the Kernel Thread, but there is no way.
>>>>>>
>>>>>> Kernel version is 2.6.31-11-rt
>>>>>>
>>>>>> What do I call to change a kernel thread priority?
>>>>>>
>>>>>> Thanks you very much
>>>>>>
>>>>>> Mónica
>>>>>>
>>>>>> --
>>>>>> To unsubscribe from this list: send the line "unsubscribe
>>>>>> linux-rt-users" in
>>>>>> the body of a message to majordomo@vger.kernel.org
>>>>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>>>>
>>>>
>>>> I need to change the priority from inside the driver, when creating the
>>>> kernel thread.
>>>> Your script is useful but it is done in user context,
>>>> Any other help please?
>>>
>>> What I do is record the PID of the thread in the driver, then create an
>>> IOCTL for your driver that user land can call that either returns the
>>> PID so you can do it in user land, or cause the IOCTL code to do it in
>>> the driver.
>>>
>>> The same can be done with the affinity of the IRQ if you record the IRQ
>>> number.
>>>
>>> Mark
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe
>>> linux-rt-users" in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>
>> But I don't have de PID of my Kthread, I only have the task_struc * that
>> gives me the function:
>>
>> struct task_struct *kthread_create(int (*threadfn)(void *data),
>> void *data,
>> const char namefmt[], ...)
>>
>> How could I get the PID, and which function should I use in the IOCTL
>> (kernel context) for changing its priority?
>>
>
> The PID can be obtained from within the interrupt handler its self via
> current->pid.
> Obviously an interrupt has to occur first but after one interrupt you have it.
>
> Actually I had forgot how I handled this. Where I change the RT priority
> and cpu affinity is in what used to be called the Bottom Half and the IOCTL
> referred to above simply tells the BH to do it and with what values.
>
In interrupt handler code snippet:
struct task_struct *TSK;
struct sched_param PARAM = {.sched_priority = MAX_RT_PRIO };
TSK = current;
Code snippet from BH:
if (((rtom_rtprio != 0) &&
(rtom_rtprio != PARAM.sched_priority)) ||
(my_rtom_rtprio[BOARD] != rtom_rtprio)) {
PARAM.sched_priority = rtom_rtprio;
my_rtom_rtprio[COUNT] = rtom_rtprio;
sched_setscheduler(TSK, SCHED_FIFO, &PARAM);
set_cpus_allowed(TSK, rtom_devices[BOARD].irq_cpu_mask);
rtom_devices[BOARD].irq_task_pid = TSK->pid;
}
rtom_rtprio and irq_cpu_mask are set by userland via an IOCTL. An interrupt
must occur for this to happen and my BOARD never shares IRQs.
Mark
next prev parent reply other threads:[~2011-06-07 9:46 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-04 11:48 One Interrupted Threads per Interrupt line? Monica Puig-Pey
2011-06-04 12:03 ` I/O operations priority in RTOS Monica Puig-Pey
2011-06-04 12:30 ` kernel threads in drivers using the RT patch Monica Puig-Pey
2011-06-06 11:47 ` Changing Kernel thread priorities Monica Puig-Pey
2011-06-06 11:54 ` Rolando Martins
2011-06-06 11:58 ` Monica Puig-Pey
2011-06-06 16:49 ` Mark Hounschell
2011-06-07 8:40 ` Monica Puig-Pey
2011-06-07 9:14 ` Mark Hounschell
2011-06-07 9:46 ` Mark Hounschell [this message]
2011-06-07 18:34 ` Monica Puig-Pey
2011-06-07 18:55 ` Mark Hounschell
2011-06-10 10:12 ` Monica Puig-Pey
2011-06-06 18:20 ` Armin Steinhoff
-- strict thread matches above, loose matches on Subject: below --
2011-06-06 12:10 Johannes Bauer
2011-06-06 22:36 ` Peter Zijlstra
2011-06-07 8:27 Johannes Bauer
2011-06-07 8:41 ` Thomas Gleixner
2011-06-07 9:40 ` Armin Steinhoff
2011-06-07 9:37 ` Peter Zijlstra
2011-06-07 11:02 ` Remy Bohmer
2011-06-07 14:14 ` Peter Zijlstra
2011-06-07 14:57 ` Lucas De Marchi
2011-06-07 15:15 ` Thomas Gleixner
2011-06-07 23:38 ` Nicholas Mc Guire
2011-06-07 23:35 ` Nicholas Mc Guire
2011-06-08 17:50 ` Remy Bohmer
2011-06-08 19:49 ` Thomas Gleixner
2011-06-10 14:04 ` Remy Bohmer
2011-06-10 15:37 ` Thomas Gleixner
2011-06-11 17:16 ` Remy Bohmer
2011-06-09 11:19 ` Nicholas Mc Guire
[not found] <17185480.5304.1307435255996.JavaMail.root@WARSBL214.highway.tel ekom.at>
[not found] ` <17185480.5304.1307435255996.JavaMail.root@WARSBL214.highway.te lekom.at>
2011-06-07 8:32 ` Monica Puig-Pey
2011-06-07 8:43 ` Thomas Gleixner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4DEDF366.6000706@cfl.rr.com \
--to=dmarkh@cfl.rr.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rt-users@vger.kernel.org \
--cc=markh@compro.net \
--cc=puigpeym@unican.es \
--cc=rolando.martins@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).