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