Introdução

O KServer é o servidor de processos fornecido pela KHOMP para situações em que mais de um aplicativo (processo) precisa acessar as placas. A API de programação das placas, a K3L API, acessa os drivers das placas, mas apenas um processo por vez pode carregá-la. Isso implica que em sistemas onde vários processos precisam se comunicar com a placa, algum sistema de comunicação entre processos precisa existir.

Nesse contexto, a solução proposta pela KHOMP foi fornecer uma biblioteca dinâmica com o mesmo nome e interface que a K3L API, chamada então de API cliente ou K3L-C. Esta nova biblioteca, ao invés de se comunicar com os drivers, comunica-se com um processo - o KServer - que é ligado à biblioteca da K3L API, e repassa as solicitações dos processos e as notificações recebidas da K3L. A figura 1 demonstra a hierarquia de comunicação com a placa:



Figura 1 - Modelo de comunicação utilizando o KServer.


Utilização do programa

O comportamento padrão do KServer é, ao iniciar, verificar se as placas já estão ligadas e, caso não estejam, liga-las. Ao fechar, manter as placas ligadas, para que continuem gerando os clocks dos barramentos e também acelerar a próxima inicialização do sistema. Os outros detalhes da inicialização são tratados a seguir.

Controle do processo

Para inicializar o KServer, basta digitar na linha de comando:

# kserver start

Isto inicializará o processo com as opções padrão. Para finalizá-lo, basta digitar:

# kserver stop

O que fará ele requisitar a finalização do processo, e aguardar até que este termine. Para reiniciar, pode-se executar o comando:

# kserver restart

Que é equivalente a:

# kserver stop; kserver start

Parâmetros

O comportamento de inicialização do KServer pode ser alterado por meio das flags de inicialização, sinalizadas por parâmetros na linha de comando:

Estas opções devem ser passadas após o comando (start/restart), como no exemplo abaixo:

# kserver start -novoip -debug

Outros parâmetros, também disponíveis para linha de comando:

Configurações

Para definir parâmetros que sempre serão utilizados no KServer, não é necessário utilizar apenas os parâmetros de linha de comando: é possível definir opções padrão através da criação de arquivos específicos dentro do diretório "/etc/kserver".

A existência destes arquivos sinaliza para o KServer que este deve ativar as opções respectivas ao inicializar.

A lista de arquivos é a seguinte:

Permissões

Para qualquer processo utilizar o KServer, é necessário que o usuário esteja no grupo 'root' do sistema sistema operacional. Caso não esteja, é necessário incluir o usuário no grupo 'root', utilizando para isto as ferramentas disponíveis no sistema operacional (ex: usermod).

Pode-se também configurar o KServer para criar os arquivos de comunicação utilizando um determinado grupo, à escolha do usuário, bastando para isto criar o arquivo:

/etc/kserver/shm-group

O conteúdo deste deve ser apenas o nome do grupo.

Por exemplo: para configurar o KServer com permissões para programas do grupo asterisk, deve-se colocar apenas o seguinte o texto asterisk no arquivo /etc/kserver/shm-group, que pode ser feito da seguinte forma:

# echo asterisk > /etc/kserver/shm-group

Identificando problemas

Ao carregar o processo de gerência das placas, o programa kserver inicializa um serviço em segundo plano, redirecionando todas as mensagens de erros/avisos para o mecanismo de logs do sistema operacional (syslog), sendo estas mensagens normalmente encontradas em "/var/log/messages" (dependendo da configuração da máquina).

Neste arquivo, podem ser encontradas informações sobre a carga do programa, como mensagens de erro, que podem servir para diagnosticar problemas ao carregar o serviço. Por exemplo, nas mensagens abaixo:

Jan  1 10:11:12 pbx kserver-daemon[123]: KHOMP - Servidor de Processos inicializando...
Jan  1 10:11:12 pbx kserver-daemon[123]: Iniciando sistema (API K3L)...
Jan  1 10:11:22 pbx kserver-daemon[123]: K3L 2.1 iniciada com sucesso.
Jan  1 10:11:22 pbx kserver-daemon[123]: O sistema está ativo.
Jan  1 10:12:14 pbx kserver-daemon[123]: Cliente conectou.

Podemos ver uma inicialização correta do sistema. Em caso de problemas, uma mensagem de aviso é impressa, identificando a causa do erro de carregamento. Neste caso, verifique se: