Mesmo em i386, off_t é de 64 bits. Apenas size_t é 32bit. Se você chamar sendfile (), você poderá especificar nbytes = 0 e enviará o arquivo inteiro. O deslocamento é de 64 bits, portanto, se você precisar enviar apenas parte de um arquivo grande, será necessário fazer um loop chamando sendfile () com blocos de 32 bits e aumentando o deslocamento.
Em geral, você não deve ter problemas para manusear arquivos grandes, mesmo no FreeBSD / i386.