Acesso compartilhado de sysfs

1

Programa A periodicamente (20 vezes / s) sobrescreve a primeira (e única) linha de um arquivo sysfs (F). O programa B periodicamente (20 vezes / s) abre o mesmo arquivo sysfs (F), lê a primeira linha e a fecha.

Como F é um recurso compartilhado e, no cenário acima, que não possui sincronização entre os dois programas, deve haver a possibilidade de B ler uma linha incompleta no arquivo.

Isto é verdade para os arquivos sysfs também ou o kernel serializa seu acesso?

    
por The mach 08.08.2016 / 09:06

1 resposta

1

O código sysfs foi parcialmente dividido na versão 3.14 (2014) em uma parte comum do kernf que faria com que outros subsistemas tivessem um sistema de arquivos virtual, então temos que olhar para o sysfs e o kernfs.

Embora não haja serialização aparente no código sysfs , o kernfs camada acima está usando um mutex em kernfs_file_direct_read e kernfs_fop_write para garantir que apenas uma única leitura ou gravação possa ocorrer de cada vez para o mesmo arquivo. Há também algum bloqueio quando o mmap () é usado.

Assim, seu cenário deve ser seguro.

    
por 08.08.2016 / 17:27