Change proc_new_disk_reques() to return a pointer and your program should compile
DiskRequest* proc_new_disk_request(int procnum, int sectornum, ReadOrWrite rw)
{
DiskRequest *new_request;
new_request = (DiskRequest *) checked_malloc(sizeof(DiskRequest));
new_request->dr_procnum = procnum;
new_request->dr_sectornum = sectornum;
new_request->dr_rw = rw;
new_request->dr_next = NULL;
return new_request;
}
Note that at some point in the program that pointer has to be free()'ed.