Voltar à lista
Linux x86_64IPC & sincronização#65

semop

Executa um conjunto de operações atômicas sobre semáforos System V.

Descrição

As operações são aplicadas atomicamente (tudo ou nada), o que permite implementar seções críticas complexas envolvendo múltiplos semáforos sem condição de corrida.

Header: sys/sem.hman 2

Assinatura

int semop(int semid, struct sembuf * sops, size_t nsops);

Parâmetros

ParâmetroTipoDescrição
semidintIdentificador do conjunto de semáforos.
sopsstruct sembuf *Array de operações a executar.
nsopssize_tNúmero de operações em `sops`.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1semidint
rsiargumento 2sopsstruct sembuf *
rdxargumento 3nsopssize_t

Valor de retorno

0 em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

E2BIG(7)
Lista de argumentos grande demais.
EACCES(13)
Permissão negada.
EAGAIN(11)
Recurso temporariamente indisponível (tente novamente); também conhecido como EWOULDBLOCK.
EFBIG(27)
Arquivo grande demais.
EIDRM(43)
Identificador removido (IPC System V).
EINTR(4)
Chamada interrompida por um sinal.
EINVAL(22)
Argumento inválido.

Relacionadas