void main( ){ // stress testing join (for perf) t t0; t t1; t t2; t t; // add several randomly chosen vectors f_zero( & t ); if( rand ) f_zero( & t0 ); else f_set( & t0, 1, 2 ); f_add( & t, & t0 ); if( rand ) f_zero( & t0 ); else f_set( & t0, 1, 2 ); f_add( & t, & t0 ); if( rand ) f_zero( & t0 ); else f_set( & t0, 1, 2 ); f_add( & t, & t0 ); if( rand ) f_zero( & t1 ); else f_set( & t1, 1, 2 ); f_add( & t, & t1 ); if( rand ) f_zero( & t2 ); else f_set( & t2, 1, 2 ); f_add( & t, & t2 ); // check-up assertions assert( 0 <= t.x ); assert( t.x <= 5 ); assert( 0 <= t.y ); assert( t.y <= 10 ); }
errno_t sc_close(thread_t *t, syscall_result_t *r, close_args *args) { file_t *f = f_get(t->thr_proc->p_fd, args->fd); if ( f == NULL ) return -EBADF; r->result = 0; f_set(t->thr_proc->p_fd, NULL, args->fd, FALSE); f_close(f); //close pozbywa się referencji -> dalsze odwoływanie się do niej // jest błędem return 0; }