static void load_mregs( void ) { mac_regs_t old = *mregs; if( read_session_data("REGS", 0, (char*)mregs, sizeof(mac_regs_t)) ) session_failure("Could not read registers\n"); /* there are some fields we should not touch... */ mregs->timer_stamp = old.timer_stamp; mregs->flag_bits = old.flag_bits; mregs->interrupt = 1; }
int user_create_session( int db, db_session_data* data, uint32_t uid ) { unsigned char buffer[ sizeof(db_msg) + sizeof(uint32_t) ]; db_msg* msg = (db_msg*)buffer; uint32_t* msg_id = (uint32_t*)msg->payload; msg->type = DB_SESSION_CREATE; msg->length = sizeof(uid); *msg_id = uid; if( write( db, buffer, sizeof(buffer) ) != sizeof(buffer) ) return -1; return read_session_data( db, data ); }
static void load_enet_state( void ) { mac_enet_t lis, *is = enetif; int i; for( i=0; i<MAX_ENET_IFS; i++, is++ ){ if( read_session_data( "enet", i, (char*)&lis, sizeof(lis) ) ) break; if( PD.load_save_state && PD.load_save_state(&is->iface, &lis.iface, i, 1) ) session_failure("Unexpected error in load_save_state hook\n"); is->started = lis.started; } }
int user_get_session_data( int db, db_session_data* data, uint32_t sid ) { unsigned char buffer[ sizeof(db_msg) + sizeof(uint32_t) ]; db_msg* msg = (db_msg*)buffer; uint32_t* msg_id = (uint32_t*)msg->payload; if( !sid ) return 0; msg->type = DB_SESSION_GET_DATA; msg->length = sizeof(sid); *msg_id = sid; if( write( db, buffer, sizeof(buffer) ) != sizeof(buffer) ) return -1; return read_session_data( db, data ); }