---
name: "pthread_attr_setschedparam"
section: "3"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/pthread_attr_setschedparam"
---

# pthread\_attr\_setschedparam(3)

set/get scheduling parameter attributes in thread attributes object

## NAME

pthread\_attr\_setschedparam, pthread\_attr\_getschedparam - set/get scheduling parameter attributes in thread attributes object

## LIBRARY

POSIX threads library (*libpthread*, *-lpthread*)

## SYNOPSIS

```
#include <pthread.h>
```

**int pthread\_attr\_setschedparam(pthread\_attr\_t \*restrict** *attr***,**                               **const struct sched\_param \*restrict** *param***);** **int pthread\_attr\_getschedparam(const pthread\_attr\_t \*restrict** *attr***,**                               **struct sched\_param \*restrict** *param***);**

## DESCRIPTION

The **pthread\_attr\_setschedparam**() function sets the scheduling parameter attributes of the thread attributes object referred to by *attr* to the values specified in the buffer pointed to by *param*. These attributes determine the scheduling parameters of a thread created using the thread attributes object *attr*.

The **pthread\_attr\_getschedparam**() returns the scheduling parameter attributes of the thread attributes object *attr* in the buffer pointed to by *param*.

Scheduling parameters are maintained in the following structure:

```
struct sched_param {
    int sched_priority;     /* Scheduling priority */
};
```

As can be seen, only one scheduling parameter is supported. For details of the permitted ranges for scheduling priorities in each scheduling policy, see [**sched**(7)](/sched/7.md).

In order for the parameter setting made by **pthread\_attr\_setschedparam**() to have effect when calling [**pthread\_create**(3)](/pthread_create/3.md), the caller must use [**pthread\_attr\_setinheritsched**(3)](/pthread_attr_setinheritsched/3.md) to set the inherit-scheduler attribute of the attributes object *attr* to **PTHREAD\_EXPLICIT\_SCHED**.

## RETURN VALUE

On success, these functions return 0; on error, they return a nonzero error number.

## ERRORS

**pthread\_attr\_setschedparam**() can fail with the following error:

- **EINVAL**

  The priority specified in *param* does not make sense for the current scheduling policy of *attr*.

POSIX.1 also documents an **ENOTSUP** error for **pthread\_attr\_setschedparam**(). This value is never returned on Linux (but portable and future-proof applications should nevertheless handle this error return value).

## ATTRIBUTES

For an explanation of the terms used in this section, see [**attributes**(7)](/attributes/7.md).

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **pthread\_attr\_setschedparam**(), **pthread\_attr\_getschedparam**() | Thread safety | MT-Safe |

## STANDARDS

POSIX.1-2008.

## HISTORY

POSIX.1-2001. glibc 2.0.

## NOTES

See [**pthread\_attr\_setschedpolicy**(3)](/pthread_attr_setschedpolicy/3.md) for a list of the thread scheduling policies supported on Linux.

## EXAMPLES

See [**pthread\_setschedparam**(3)](/pthread_setschedparam/3.md).

## SEE ALSO

[**sched\_get\_priority\_min**(2)](/sched_get_priority_min/2.md), [**pthread\_attr\_init**(3)](/pthread_attr_init/3.md), [**pthread\_attr\_setinheritsched**(3)](/pthread_attr_setinheritsched/3.md), [**pthread\_attr\_setschedpolicy**(3)](/pthread_attr_setschedpolicy/3.md), [**pthread\_create**(3)](/pthread_create/3.md), [**pthread\_setschedparam**(3)](/pthread_setschedparam/3.md), [**pthread\_setschedprio**(3)](/pthread_setschedprio/3.md), [**pthreads**(7)](/pthreads/7.md), [**sched**(7)](/sched/7.md)
