pthread_setprogramparam Subroutine

Propósito

Configura os atributos schedpolicy e schedparam de um encadeamento

Biblioteca

Biblioteca de encadeamentos (libpthreads.a)

Sintaxe

#include <pthread.h>
#include <sys/sched.h>

int pthread_setschedparam (thread, schedpolicy, schedparam)
pthread_t thread;
int schedpolicy;
const struct sched_param *schedparam;

Descrição

A sub-rotina pthread_setschedparam configura dinamicamente os atributos schedpolicy e schedparam do encadeamento thread.. O atributo agendamento especifica a política de agendamento do encadeamento. O atributo schedparam especifica os parâmetros de planejamento de um encadeamento criado com esse objeto de atributo. O campo sched_priority da estrutura sched_param contém a prioridade do encadeamento.. É um valor inteiro.

Se o encadeamento de destino tiver escopo de contenção do sistema, o processo deverá ter autoridade raiz para configurar a política de planejamento para SCHED_FIFO ou SCHED_RR.

Nota: O arquivo de cabeçalho pthread.h deve ser o primeiro arquivo incluído de cada arquivo de origem que usa a biblioteca de encadeamentos. Caso contrário, a sinalização de compilação -D_THREAD_SAFE deverá ser usada ou o compilador cc_r usado. Neste caso, a sinalização é automaticamente definida.

Esta subroutine faz parte do Tempo de Execução do Sistema Operacional de Base (BOS). A implementação dessa sub-rotina depende da opção POSIX de planejamento de prioridades A opção de agendamento de prioridade POSIX é implementada no sistema operacional.

Parâmetros

Tabela 1. Parâmetros
Item Descrição
Encadeamento Especifica o encadeamento de destino.
agendamento Aponta para o atributo de agendamento para definir. Ele deve ter um dos seguintes valores:
SCHED_FIFO
Denota primeiro-em agendamento de primeiro lugar.
SCHED_RR
Denota o agendamento do round-robin.
ESCALA_OUTROS
Denota a política de planejamento do sistema operacional padrão. É o valor padrão. Se agendamento for SCHED_OUTROS, então program_priority deve estar na faixa de 40 80, sendo que 40 é a prioridade menos favorecida e 80 é a mais favorecida.
Nota: Prioridade de threads com um escopo de contenção de processo e uma política SCHED_OUTROS é controlada pelo kernel; assim, configurar a prioridade de tal thread não tem efeito. No entanto, prioridade de threads com um escopo de contenção do sistema e uma política SCHED_OUTROS podem ser modificadas. A modificação afeta diretamente o valor nice do encadeamento kernel subjacente.
programar Aponta para onde os parâmetros de planejamento a serem configurados são armazenados. O campo sched_priority deve estar no intervalo de 1 a 127, em que 1 é a prioridade menos favorecida e 127 é a mais favorecida Se schedpolicy for SCHED_OTHER, então sched_priority deverá estar no intervalo de 40 a 80, em que 40 é a prioridade menos favorecida e 80 é a mais favorecida

Os usuários podem alterar a prioridade de um encadeamento ao definir sua política de planejamento para SCHED_OUTROS. Os valores legais que podem ser passados para pthread_setschedparam variam de 40 a 80. Apenas usuários privilegiados podem estabelecer uma prioridade superior a 60. Um valor que varia de 1 39 fornece a mesma prioridade de 40, e um valor que varia de 81 a 127 fornece a mesma prioridade de 80.

Valores De Retorno

Após a conclusão bem-sucedida, 0 é devolvido. Caso contrário, um código de erro é retornado.

Códigos De Erro

A sub-rotina pthread_setschedparam será malsucedida se o seguinte for verdadeiro:

Tabela 2.. Códigos de Erro
Item Descrição
EINVAL Os parâmetros thread ou planejparam não são válidos.
ENOSYS A opção de agendamento de prioridade POSIX não é implementada.
ENOTSUP O valor dos atributos de agendamento ou agendamento não são suportados.
EPERM O encadeamento de destino tem permissão insuficiente para realizar a operação ou já está engajado em um protocolo mutex.
ESRCH A thread thread não existe.