void crPackFree( void *packet ) { GET_PACKER_CONTEXT(pc); if ( IS_BUFFERED( packet ) ) return; /* the pointer passed in doesn't include the space for the single * opcode (4 bytes because of the alignment requirement) or the * length field or the header */ crFree( (unsigned char *) packet - 8 - sizeof(CRMessageOpcodes) ); }
/* * Transmit a packet which was allocated with crPackAlloc. */ void crHugePacket( CROpcode opcode, void *packet ) { CR_GET_PACKER_CONTEXT(pc); #ifndef CHROMIUM_THREADSAFE CRASSERT(sanityCheckPointer == packet); sanityCheckPointer = NULL; #endif if ( IS_BUFFERED( packet ) ) WRITE_OPCODE( pc, opcode ); else pc->SendHuge( opcode, packet ); }
static void do_fd_action(int drive) { struct request *req; DPRINT(("do_fd_action unit[drive].track=%d\n", unit[drive].track)); #ifdef TRACKBUFFER repeat: if (IS_BUFFERED( drive, ReqSide, ReqTrack )) { req = CURRENT; if (ReqCmd == READ) { copy_buffer( SECTOR_BUFFER(ReqSector), ReqData ); if (++ReqCnt < req->current_nr_sectors) { /* read next sector */ setup_req_params( drive ); goto repeat; } else { /* all sectors finished */ req->nr_sectors -= req->current_nr_sectors; req->sector += req->current_nr_sectors; end_request(req, 1); redo_fd_request(); return; } } else { /* cmd == WRITE, pay attention to track buffer * consistency! */ copy_buffer( ReqData, SECTOR_BUFFER(ReqSector) ); } } #endif if (SelectedDrive != drive) { /*unit[drive].track = -1; DAG */ fd_select_drive(drive); }; if (unit[drive].track == -1) fd_calibrate(); else if (unit[drive].track != ReqTrack << unit[drive].disktype->stretch) fd_seek(); else fd_rwsec(); }