~ubuntu-branches/ubuntu/utopic/libpthread-workqueue/utopic

« back to all changes in this revision

Viewing changes to src/posix/thread_rt.c

  • Committer: Bazaar Package Importer
  • Author(s): Mark Heily
  • Date: 2011-05-07 11:57:22 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20110507115722-n8ftqsa8w2el0xkn
Tags: 0.5.1-1
* New upstream version.
* Update control file with new Standards-Version.
* Remove -m64 from CFLAGS (Closes: #622798)
* Limit architecture to linux-any (Closes: #622799)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (c) 2011, Joakim Johansson <jocke@tbricks.com>
 
3
 *
 
4
 * All rights reserved.
 
5
 *
 
6
 * Redistribution and use in source and binary forms, with or without
 
7
 * modification, are permitted provided that the following conditions
 
8
 * are met:
 
9
 * 1. Redistributions of source code must retain the above copyright
 
10
 *    notice unmodified, this list of conditions, and the following
 
11
 *    disclaimer.
 
12
 * 2. Redistributions in binary form must reproduce the above copyright
 
13
 *    notice, this list of conditions and the following disclaimer in the
 
14
 *    documentation and/or other materials provided with the distribution.
 
15
 *
 
16
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 
17
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 
18
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 
19
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 
20
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 
21
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 
22
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 
23
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
24
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 
25
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
26
 *
 
27
 */
 
28
 
 
29
#include "platform.h"
 
30
#include "private.h"
 
31
 
 
32
#if defined(__sun)
 
33
 
 
34
#include <stdio.h>
 
35
#include <pthread.h>
 
36
#include <sys/types.h>
 
37
#include <sys/signal.h>
 
38
#include <sys/procset.h>
 
39
#include <sys/priocntl.h>
 
40
#include <sys/rtpriocntl.h>
 
41
#include <sys/tspriocntl.h>
 
42
#include <sys/iapriocntl.h>
 
43
#include <sys/fsspriocntl.h>
 
44
#include <sys/fxpriocntl.h>
 
45
 
 
46
// Set the RT priority - it is inveresed from the queue priorities, higher is better
 
47
// We give '0' to low prio queues and the highest possible for the 'high' prio queue (currently 2)
 
48
 
 
49
void ptwq_set_current_thread_priority(int priority)
 
50
{
 
51
    long retval;
 
52
 
 
53
    dbg_printf("reconfiguring thread for priority level=%u", priority);
 
54
 
 
55
    switch (priority)
 
56
    {
 
57
        case WORKQ_LOW_PRIOQUEUE:
 
58
            retval = priocntl(P_LWPID, P_MYID, PC_SETXPARMS, "TS", 0); // run low prio queues as time sharing
 
59
            break;
 
60
        case WORKQ_DEFAULT_PRIOQUEUE:
 
61
            retval = priocntl(P_LWPID, P_MYID, PC_SETXPARMS, "RT", RT_KY_PRI, WORKQ_NUM_PRIOQUEUE - priority - 1, 0);
 
62
            break;
 
63
        case WORKQ_HIGH_PRIOQUEUE:
 
64
            retval = priocntl(P_LWPID, P_MYID, PC_SETXPARMS, "RT", RT_KY_PRI, WORKQ_NUM_PRIOQUEUE - priority - 1, 0);
 
65
            break;
 
66
        default:
 
67
            dbg_printf("Unknown priority level = %u", priority);
 
68
            break;
 
69
    }
 
70
    
 
71
 
 
72
    if (retval != 0)
 
73
        dbg_perror("priocntl()");
 
74
 
 
75
    return;
 
76
}
 
77
 
 
78
#else
 
79
 
 
80
void ptwq_set_current_thread_priority(int priority)
 
81
{    
 
82
    return;
 
83
}
 
84
 
 
85
#endif