domingo, 12 de dezembro de 2010

Overview do Xenbus

O XenBus é o responsável por prover uma maneira de organizar, enumerar e conectar os dispositivos virtuais disponíveis para um determinado domínio/guest.

Estrutura para definir um dispositivo XenBus
../include/xen/xenbus.h
struct xenbus_device {
 const char *devicetype;
 const char *nodename;
 const char *otherend;
 int otherend_id;
 struct xenbus_watch otherend_watch
 struct device dev;
 enum xenbus_state state;
 struct completion down;
};
A estrutura xenbus_device para criação de um disposto é muito parecida da estrutura para criação de qualquer dispositivo no Linux.

Uma parte fundamental da estrutura xenbus_device é o xenbus_state, que é definido em io/xenbus.h. Existem sete estados que podem ser definidos:

- XenbusStateUnknown: representa o estado inicial do dispositivo no barramento, antes de estar conectado.

- XenbusStateInitiallising: é o estado que fica enquanto o back end está em processo de inicialização.

- XenbusStateInitWait:
nesse estado o driver já inicializou, porém precisa de mais informações para que possa ser conectado.

- XenbusStateIniialised: indica que o back end está pronto para conexão.

- XenbusStateConnected:
é o estado normal do barramento. Para maior parte do tempo em que o guest está rodando, o barramento irá estar nesse estado indicando que o front e back ends estão se comunicando normalmente.

- XenbusStateClosing: indica que o dispositivo não está mais disponível. O front e back estão parcialmente conectados, isto é o back end não está executando mais nenhum comando recebido do front end.

- XenbusStateClosed:
é o estate final, o back end e o front end estão totalmente desconectados.

Existem duas excepções que não utilizam o XenBus são o console e o XenStore.

Nenhum comentário:

Postar um comentário