Example #1
0
void testFileCreationAndDeletion() {
   printf("testing file creation and deletion\n");

   printf("creating files 'a', 'b', and 'c'\n");
   fileDescriptor a, b, c;
   a = tfs_openFile("a");
   b = tfs_openFile("b");
   c = tfs_openFile("c");

   REQUIRE_GT(a, -1);
   REQUIRE_GT(b, -1);
   REQUIRE_GT(c, -1);

   printf("listing disk contents\n");
   REQUIRE_GT(tfs_listDisk(), -1);

   printf("deleting files 'a', 'b', and 'c'\n");
   REQUIRE_GT(tfs_deleteFile(a), -1);
   REQUIRE_GT(tfs_deleteFile(b), -1);
   REQUIRE_GT(tfs_deleteFile(c), -1);

   printf("listing disk contents\n");
   REQUIRE_GT(tfs_listDisk(), -1);
}
Example #2
0
void deleteFile(Buffer *buf, int FD) {
   tfs_deleteFile(FD);
   for (int i = 0; i < buf->nBufferBlocks; i++) {
      if (buf->buffer_timestamp[i] != -1 && buf->pages[i].address.FD == FD) {
         buf->buffer_timestamp[i] = -1;
         buf->pin[i] = 0;
         buf->numBufferOccupied--;
      }
   }

   for (int i = 0; i < buf->nCacheBlocks; i++) {
      if (buf->cache_timestamp[i] != -1 && buf->pages[i].address.FD == FD) {
         buf->cache_timestamp[i] = -1;
         buf->numCacheOccupied--;
      }
   }
}