Linux DIRECT IO遭遇EINVAL的解法
背景:Linux 2.6内核下使用Direct IO,如果调用write函数接口,则需传递一个512字节对齐的缓冲区指针以保证DMA调用的正确性。如果指针未对齐,则抛出错误码EIVAL。错误方法1:申明:struct S { char data[ 4096 ]; } __attribute__ ((aligned ( 512 )));在函数中使用:struct S buf_mem;因为局部变量 buf_mem是装载在栈上的,编译器不会因为aligned就改...