0

I mapped cmb resource file and wrote data to it. When I unplugged the SSD, I thought that a SIGBUS should be generated but the program was still running. So was this a normal behavior?

  • Linux kernel: v5.15.88
  • OS: Centos 7.4
  • CPU: Intel(R) Xeon(R) Silver 4114

My code like this:

size_t resource_size = 268435456;
size_t remain = resource_size;
size_t offset = 0;
size_t range = 128;
char tmp;
int fd = open("/sys/bus/pci/devices/0000:5e:00.0/resource4_wc", O_RDWR);
void * map_addr = mmap(NULL, resource_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);

while (remain > 0) {
  memcpy(map_addr + offset, buf + offset, range);
  memcpy(&tmp, map_addr + offset, 0);
  remain -= range;
  offset += range;
  if (remain == 0) {
    remain = resource_size;
    offset = 0;
  }
}
0andriy
  • 4,183
  • 1
  • 24
  • 37

0 Answers0