static value stat_aux(int use_64, struct stat *buf) { CAMLparam0(); CAMLlocal5(atime, mtime, ctime, offset, v); #include "nanosecond_stat.h" atime = caml_copy_double((double) buf->st_atime + (NSEC(buf, a) / 1000000000.0)); mtime = caml_copy_double((double) buf->st_mtime + (NSEC(buf, m) / 1000000000.0)); ctime = caml_copy_double((double) buf->st_ctime + (NSEC(buf, c) / 1000000000.0)); #undef NSEC offset = use_64 ? Val_file_offset(buf->st_size) : Val_int (buf->st_size); v = alloc_small(12, 0); Init_field(v, 0, Val_int (buf->st_dev)); Init_field(v, 1, Val_int (buf->st_ino)); Init_field(v, 2, cst_to_constr(buf->st_mode & S_IFMT, file_kind_table, sizeof(file_kind_table) / sizeof(int), 0)); Init_field(v, 3, Val_int (buf->st_mode & 07777)); Init_field(v, 4, Val_int (buf->st_nlink)); Init_field(v, 5, Val_int (buf->st_uid)); Init_field(v, 6, Val_int (buf->st_gid)); Init_field(v, 7, Val_int (buf->st_rdev)); Init_field(v, 8, offset); Init_field(v, 9, atime); Init_field(v, 10, mtime); Init_field(v, 11, ctime); CAMLreturn(v); }
static MACHINE_DRIVER_START( nitedrvr ) /* driver data */ MDRV_DRIVER_DATA(nitedrvr_state) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6502, XTAL_12_096MHz/12) // 1 MHz MDRV_CPU_PROGRAM_MAP(nitedrvr_map) MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) MDRV_WATCHDOG_VBLANK_INIT(3) MDRV_MACHINE_START(nitedrvr) MDRV_MACHINE_RESET(nitedrvr) MDRV_TIMER_ADD_PERIODIC("crash_timer", nitedrvr_crash_toggle_callback, NSEC(PERIOD_OF_555_ASTABLE_NSEC(RES_K(180), 330, CAP_U(1)))) /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_REFRESH_RATE(57) // how is this derived? MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) MDRV_SCREEN_SIZE(32*8, 32*8) MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1) MDRV_GFXDECODE(nitedrvr) MDRV_PALETTE_LENGTH(2) MDRV_PALETTE_INIT(black_and_white) MDRV_VIDEO_START(nitedrvr) MDRV_VIDEO_UPDATE(nitedrvr)
/* * Transfer the bte_test_buffer from our node to the specified * destination and print out timing results. */ static void brt_time_xfer(int dest_node, int iterations, int xfer_lines) { int iteration; char *src, *dst; u64 xfer_len, src_phys, dst_phys; u64 itc_before, itc_after, mem_intvl, bte_intvl; xfer_len = xfer_lines * L1_CACHE_BYTES; src = nodepda->bte_if[0].bte_test_buf; src_phys = __pa(src); dst = NODEPDA(dest_node)->bte_if[1].bte_test_buf; dst_phys = __pa(dst); mem_intvl = 0; for (iteration = 0; iteration < iterations; iteration++) { if (tm_memcpy) { itc_before = ia64_get_itc(); memcpy(dst, src, xfer_len); itc_after = ia64_get_itc(); mem_intvl = itc_after - itc_before; } itc_before = ia64_get_itc(); bte_copy(src_phys, dst_phys, xfer_len, BTE_NOTIFY, NULL); itc_after = ia64_get_itc(); bte_intvl = itc_after - itc_before; if (tm_memcpy) { printk("%3d,%3d,%3d,%5d,%4ld,%7ld,%3ld," "%7ld,%7ld,%7ld\n", smp_processor_id(), NASID_GET(src), NASID_GET(dst), xfer_lines, NSEC(bte_setup_time), NSEC(bte_transfer_time), NSEC(bte_tear_down_time), NSEC(bte_execute_time), NSEC(bte_intvl), NSEC(mem_intvl)); } else { printk("%3d,%3d,%3d,%5d,%4ld,%7ld,%3ld," "%7ld,%7ld\n", smp_processor_id(), NASID_GET(src), NASID_GET(dst), xfer_lines, NSEC(bte_setup_time), NSEC(bte_transfer_time), NSEC(bte_tear_down_time), NSEC(bte_execute_time), NSEC(bte_intvl)); } } }