Módulos Pushíveis
Os módulos são empurrados para um fluxo para fornecer funções especiais e camadas de protocolo adicionais.
No diagrama de Stream Set Up (Figura 1), o fluxo à esquerda é aberto em uma configuração mínima com um driver de tty tty e nenhum outro módulo adicionado. O motorista recebe um caractere de cada vez do aparelho, coloca o personagem em uma mensagem, depois envia a mensagem a montante. A cabeça de fluxo recebe a mensagem, extrai o caractere único, depois a copia no buffer do processo de leitura para enviar para o processo do usuário em resposta à subroutine read . Quando o processo do usuário quiser enviar caracteres de volta para o driver, ele emite a subroutine write e os caracteres são enviados para o cabeçote do fluxo. A cabeça copia os caracteres em uma ou mais mensagens de vários caracteres e envia essas mensagens a jusante. Um programa de aplicação que não necessite de mais processamento de caracteres do kernel usaria este fluxo mínimo.
Um usuário que necessite de uma interface mais terminal precisaria inserir um módulo para executar funções como ecoar, caractere-apagar e linha-kill. Supondo que o módulo CANONPROC mostrado no diagrama Stream Set Up (Figura 1) preencha esta necessidade, o programa de aplicativos primeiro abre um fluxo de tty tty. Em seguida, o módulo CANONPROC é empurrado acima do driver para criar um fluxo expandido do formulário mostrado à direita do diagrama. O driver não está ciente de que um módulo foi colocado acima dele e, portanto, continua a enviar mensagens de caracteres únicos a montante. O módulo recebe mensagens de caráter único do driver, processa os caracteres, em seguida, os acumula em strings de linha. Cada linha é colocada em uma mensagem então enviada para a cabeça do fluxo. A cabeça agora encontra mais de um personagem nas mensagens que recebe de downstream.
A implementação da cabeça de fluxo acomoda essa mudança no formato automaticamente e transfere os dados de vários caracteres para o espaço do usuário. A cabeça de fluxo também mantém a faixa de mensagens parcialmente transferida para o espaço do usuário (por exemplo, quando o buffer de leitura do usuário atual só pode manter parte da mensagem atual). A operação downstream não é afetada: a cabeça envia, e o motorista recebe, mensagens de vários caracteres.
A cabeça de fluxo fornece a interface entre o fluxo e o processo do usuário. Os módulos e drivers não têm que implementar funções de interface do usuário diferentes das subroutines abertas e fechar .