if(fd = open("/dev/mem",O_SYNC) < 0){
Вы перепутали приоритет оператора. Это анализируется как
fd = (open("/dev/mem",O_SYNC) < 0)
, а не
(fd = open("/dev/mem",O_SYNC)) < 0
, как вы, очевидно, ожидаете. Всегда компилируйте с -Wall
и не игнорируйте предупреждения.