免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: triphop
打印 上一主题 下一主题

在kernel module中我可以调用 time 函数吗? [复制链接]

论坛徽章:
0
41 [报告]
发表于 2003-06-22 08:24 |只看该作者

在kernel module中我可以调用 time 函数吗?

Sorry,这两天没到这里!
sysctl -a|grep time
kern.boottime: { sec = 993169141, usec = 824990 } Fri Jun 22 08:19:01 2001
kern.cam.da.default_timeout: 60
kern.cp_time: 36 0 188 22 9950
kern.timecounter.method: 0
kern.timecounter.hardware: i8254
vfs.nfs.access_cache_timeout: 60
vfs.timestamp_precision: 0
net.inet.tcp.delacktime: 100
net.link.ether.inet.host_down_time: 20
net.inet6.ip6.temppltime: 86400
net.inet6.ip6.tempvltime: 604800
net.inet6.icmp6.redirtimeout: 600
p1003_1b.realtime_signals: 0
p1003_1b.timers: 0
p1003_1b.delaytimer_max: 0
p1003_1b.timer_max: 0

sysctl -a
kern.ostype: FreeBSD
kern.osrelease: 4.5-RELEASE
kern.osrevision: 199506
kern.version: FreeBSD 4.5-RELEASE #0: Mon Jan 28 14:31:56 GMT 2002
    murray@builder.freebsdmall.com:/usr/src/sys/compile/GENERIC

kern.maxvnodes: 4294
kern.maxproc: 532
kern.maxfiles: 1064
kern.argmax: 65536
kern.securelevel: -1
kern.hostname: bsd.math
kern.hostid: 0
kern.clockrate: { hz = 100, tick = 10000, tickadj = 5, profhz = 1024, stathz = 128 }
kern.posix1version: 199309
kern.ngroups: 16
kern.job_control: 1
kern.saved_ids: 0
kern.boottime: { sec = 993169141, usec = 824990 } Fri Jun 22 08:19:01 2001
kern.domainname:
kern.osreldate: 450000
kern.bootfile: /kernel
kern.maxfilesperproc: 957
kern.maxprocperuid: 478
kern.dumpdev:
kern.ipc.maxsockbuf: 262144
kern.ipc.sockbuf_waste_factor: 8
kern.ipc.somaxconn: 128
kern.ipc.max_linkhdr: 16
kern.ipc.max_protohdr: 60
kern.ipc.max_hdr: 76
kern.ipc.max_datalen: 136
kern.ipc.nmbclusters: 1024
kern.ipc.semmap: 30
kern.ipc.semmni: 10
kern.ipc.semmns: 60
kern.ipc.semmnu: 30
kern.ipc.semmsl: 60
kern.ipc.semopm: 100
kern.ipc.semume: 10
kern.ipc.semusz: 92
kern.ipc.semvmx: 32767
kern.ipc.semaem: 16384
kern.ipc.shmmax: 33554432
kern.ipc.shmmin: 1
kern.ipc.shmmni: 192
kern.ipc.shmseg: 128
kern.ipc.shmall: 8192
kern.ipc.shm_use_phys: 0
kern.ipc.mbuf_wait: 32
kern.ipc.mbtypes: 7 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0
kern.ipc.nmbufs: 4096
kern.ipc.maxsockets: 1064
kern.dummy: 0
kern.ps_strings: 3217031152
kern.usrstack: 3217031168
kern.logsigexit: 1
kern.cam.da.retry_count: 4
kern.cam.da.default_timeout: 60
kern.cam.cd.changer.min_busy_seconds: 5
kern.cam.cd.changer.max_busy_seconds: 15
kern.fallback_elf_brand: -1
kern.init_path: /sbin/init:/sbin/oinit:/sbin/init.bak:/stand/sysinstall
kern.module_path: /;/boot/;/modules/
kern.acct_suspend: 2
kern.acct_resume: 4
kern.acct_chkfreq: 15
kern.cp_time: 38 0 212 23 12599
kern.timecounter.method: 0
kern.timecounter.hardware: i8254
kern.openfiles: 36
kern.kq_calloutmax: 4096
kern.ps_arg_cache_limit: 256
kern.ps_argsopen: 1
kern.fast_vfork: 1
kern.randompid: 0
kern.maxusers: 32
kern.ps_showallprocs: 1
kern.shutdown.poweroff_delay: 5000
kern.shutdown.kproc_shutdown_wait: 60
kern.sugid_coredump: 0
kern.coredump: 1
kern.corefile: %N.core
kern.quantum: 100000
kern.ccpu: 1948
kern.fscale: 2048
kern.devstat.numdevs: 4
kern.devstat.generation: 4
kern.devstat.version: 4
kern.disks: ad0 md0
kern.log_wakeups_per_second: 5
kern.msgbuf:
kern.msgbuf_clear: 0
kern.nselcoll: 0
kern.consmute: 0
kern.filedelay: 30
kern.dirdelay: 29
kern.metadelay: 28
kern.minvnodes: 1073
kern.chroot_allow_open_directories: 1
vm.loadavg: { 0.08 0.03 0.01 }
vm.v_free_min: 175
vm.v_free_target: 801
vm.v_free_reserved: 101
vm.v_inactive_target: 1201
vm.v_cache_min: 801
vm.v_cache_max: 1602
vm.v_pageout_free_min: 34
vm.pageout_algorithm: 0
vm.swap_enabled: 1
vm.swap_async_max: 4
vm.swap_idle_threshold1: 2
vm.swap_idle_threshold2: 10
vm.v_free_severe: 138
vm.stats.sys.v_swtch: 1943
vm.stats.sys.v_trap: 4409
vm.stats.sys.v_syscall: 17991
vm.stats.sys.v_intr: 31144
vm.stats.sys.v_soft: 518
vm.stats.vm.v_vm_faults: 7556
vm.stats.vm.v_cow_faults: 1671
vm.stats.vm.v_cow_optim: 0
vm.stats.vm.v_zfod: 1352
vm.stats.vm.v_ozfod: 1326
vm.stats.vm.v_swapin: 0
vm.stats.vm.v_swapout: 0
vm.stats.vm.v_swappgsin: 0
vm.stats.vm.v_swappgsout: 0
vm.stats.vm.v_vnodein: 171
vm.stats.vm.v_vnodeout: 0
vm.stats.vm.v_vnodepgsin: 1314
vm.stats.vm.v_vnodepgsout: 0
vm.stats.vm.v_intrans: 3
vm.stats.vm.v_reactivated: 49
vm.stats.vm.v_pdwakeups: 0
vm.stats.vm.v_pdpages: 0
vm.stats.vm.v_dfree: 0
vm.stats.vm.v_pfree: 1787
vm.stats.vm.v_tfree: 3606
vm.stats.vm.v_page_size: 4096
vm.stats.vm.v_page_count: 15049
vm.stats.vm.v_free_reserved: 101
vm.stats.vm.v_free_target: 801
vm.stats.vm.v_free_min: 175
vm.stats.vm.v_free_count: 11741
vm.stats.vm.v_wire_count: 1309
vm.stats.vm.v_active_count: 865
vm.stats.vm.v_inactive_target: 1201
vm.stats.vm.v_inactive_count: 1128
vm.stats.vm.v_cache_count: 6
vm.stats.vm.v_cache_min: 801
vm.stats.vm.v_cache_max: 1602
vm.stats.vm.v_pageout_free_min: 34
vm.stats.vm.v_interrupt_free_min: 2
vm.stats.vm.v_forks: 101
vm.stats.vm.v_vforks: 1
vm.stats.vm.v_rforks: 0
vm.stats.vm.v_kthreads: 5
vm.stats.vm.v_forkpages: 6281
vm.stats.vm.v_vforkpages: 49
vm.stats.vm.v_rforkpages: 0
vm.stats.vm.v_kthreadpages: 0
vm.stats.misc.zero_page_count: 10107
vm.stats.misc.cnt_prezero: 11469
vm.max_proc_mmap: 4280
vm.max_launder: 32
vm.pageout_stats_max: 801
vm.pageout_full_stats_interval: 20
vm.pageout_stats_interval: 5
vm.pageout_stats_free_max: 5
vm.swap_idle_enabled: 0
vm.defer_swapspace_pageouts: 0
vm.disable_swapspace_pageouts: 0
vm.pageout_lock_miss: 0
vm.zone:
ITEM            SIZE     LIMIT    USED    FREE  REQUESTS

PIPE:            160,        0,      2,    100,       34
SWAPMETA:        160,    15049,      0,      0,        0
unpcb:            64,        0,      2,    126,        5
ripcb:           192,     1064,      0,     21,        1
syncache:        160,    15359,      0,     25,        1
tcpcb:           544,     1064,      5,     10,        5
udpcb:           192,     1064,      2,     40,       23
socket:          192,     1064,      9,     33,       34
KNOTE:            64,        0,      0,    128,        4
DIRHASH:        1024,        0,     24,      4,       24
NFSNODE:         352,        0,      0,      0,        0
NFSMOUNT:        544,        0,      0,      0,        0
VNODE:           192,        0,    869,     85,      869
NAMEI:          1024,        0,      0,     16,     2669
VMSPACE:         192,        0,     18,     46,      102
PROC:            416,        0,     23,     26,      107
DP fakepg:        64,        0,      0,      0,        0
PV ENTRY:         28,   139150,   3661,  12714,    20675
MAP ENTRY:        48,        0,    276,    107,     5120
KMAP ENTRY:       48,     3890,     74,    139,      421
MAP:             108,        0,      7,      3,        7
VM OBJECT:        96,        0,    373,     93,     1665
vm.zone_kmem_pages: 9
vm.zone_kmem_kvaspace: 9687040
vm.zone_kern_pages: 80
vm.kvm_size: 1069547520
vm.kvm_free: 943718400
vfs.nfs.nfs_privport: 0
vfs.nfs.async: 0
vfs.nfs.commit_blks: 0
vfs.nfs.commit_miss: 0
vfs.nfs.realign_test: 0
vfs.nfs.realign_count: 0
vfs.nfs.bufpackets: 4
vfs.nfs.gatherdelay: 10000
vfs.nfs.gatherdelay_v3: 0
vfs.nfs.defect: 0
vfs.nfs.diskless_valid: 0
vfs.nfs.diskless_rootpath:
vfs.nfs.diskless_swappath:
vfs.nfs.access_cache_timeout: 60
vfs.nfs.nfsv3_commit_on_close: 0
vfs.ufs.dirhash_minsize: 2560
vfs.ufs.dirhash_maxmem: 2097152
vfs.ufs.dirhash_mem: 26748
vfs.ufs.dirhash_docheck: 0
vfs.numdirtybuffers: 4
vfs.lodirtybuffers: 128
vfs.hidirtybuffers: 256
vfs.numfreebuffers: 940
vfs.lofreebuffers: 57
vfs.hifreebuffers: 114
vfs.runningbufspace: 0
vfs.lorunningspace: 524288
vfs.hirunningspace: 1048576
vfs.maxbufspace: 15466496
vfs.hibufspace: 14811136
vfs.lobufspace: 14745600
vfs.bufspace: 3653632
vfs.maxmallocbufspace: 740556
vfs.bufmallocspace: 61440
vfs.getnewbufcalls: 285
vfs.getnewbufrestarts: 0
vfs.vmiodirenable: 1
vfs.bufdefragcnt: 0
vfs.buffreekvacnt: 0
vfs.bufreusecnt: 223
vfs.cache.numneg: 65
vfs.cache.numcache: 1356
vfs.cache.numcalls: 4615
vfs.cache.dothits: 33
vfs.cache.dotdothits: 11
vfs.cache.numchecks: 3320
vfs.cache.nummiss: 1472
vfs.cache.nummisszap: 8
vfs.cache.numposzaps: 12
vfs.cache.numposhits: 2878
vfs.cache.numnegzaps: 2
vfs.cache.numneghits: 199
vfs.cache.numcwdcalls: 10
vfs.cache.numcwdfail1: 0
vfs.cache.numcwdfail2: 0
vfs.cache.numcwdfail3: 0
vfs.cache.numcwdfail4: 0
vfs.cache.numcwdfound: 10
vfs.cache.numfullpathcalls: 0
vfs.cache.numfullpathfail1: 0
vfs.cache.numfullpathfail2: 0
vfs.cache.numfullpathfail3: 0
vfs.cache.numfullpathfail4: 0
vfs.cache.numfullpathfound: 0
vfs.write_behind: 1
vfs.reassignbufcalls: 225
vfs.reassignbufloops: 0
vfs.reassignbufsortgood: 98
vfs.reassignbufsortbad: 17
vfs.reassignbufmethod: 1
vfs.nameileafonly: 0
vfs.timestamp_precision: 0
vfs.usermount: 0
vfs.ffs.doreallocblks: 1
vfs.ffs.doasyncfree: 1
net.local.stream.sendspace: 8192
net.local.stream.recvspace: 8192
net.local.dgram.maxdgram: 2048
net.local.dgram.recvspace: 4096
net.local.inflight: 0
net.inet.ip.portrange.lowfirst: 1023
net.inet.ip.portrange.lowlast: 600
net.inet.ip.portrange.first: 1024
net.inet.ip.portrange.last: 5000
net.inet.ip.portrange.hifirst: 49152
net.inet.ip.portrange.hilast: 65535
net.inet.ip.forwarding: 0
net.inet.ip.redirect: 1
net.inet.ip.ttl: 64
net.inet.ip.rtexpire: 3600
net.inet.ip.rtminexpire: 10
net.inet.ip.rtmaxcache: 128
net.inet.ip.sourceroute: 0
net.inet.ip.intr_queue_maxlen: 50
net.inet.ip.intr_queue_drops: 0
net.inet.ip.accept_sourceroute: 0
net.inet.ip.fastforwarding: 0
net.inet.ip.keepfaith: 0
net.inet.ip.gifttl: 30
net.inet.ip.subnets_are_local: 0
net.inet.ip.maxfragpackets: 256
net.inet.ip.check_interface: 0
net.inet.icmp.maskrepl: 0
net.inet.icmp.icmplim: 200
net.inet.icmp.drop_redirect: 0
net.inet.icmp.log_redirect: 0
net.inet.icmp.bmcastecho: 0
net.inet.tcp.rfc1323: 1
net.inet.tcp.rfc1644: 0
net.inet.tcp.mssdflt: 512
net.inet.tcp.keepidle: 7200000
net.inet.tcp.keepintvl: 75000
net.inet.tcp.sendspace: 32768
net.inet.tcp.recvspace: 65536
net.inet.tcp.keepinit: 75000
net.inet.tcp.delacktime: 100
net.inet.tcp.v6mssdflt: 1024
net.inet.tcp.log_in_vain: 0
net.inet.tcp.blackhole: 0
net.inet.tcp.delayed_ack: 1
net.inet.tcp.path_mtu_discovery: 1
net.inet.tcp.slowstart_flightsize: 1
net.inet.tcp.local_slowstart_flightsize: 4
net.inet.tcp.newreno: 1
net.inet.tcp.tcbhashsize: 512
net.inet.tcp.do_tcpdrain: 1
net.inet.tcp.pcbcount: 5
net.inet.tcp.icmp_may_rst: 1
net.inet.tcp.strict_rfc1948: 0
net.inet.tcp.isn_reseed_interval: 0
net.inet.tcp.syncookies: 1
net.inet.tcp.syncache.bucketlimit: 30
net.inet.tcp.syncache.cachelimit: 15359
net.inet.tcp.syncache.count: 0
net.inet.tcp.syncache.hashsize: 512
net.inet.tcp.syncache.rexmtlimit: 3
net.inet.tcp.msl: 30000
net.inet.tcp.always_keepalive: 1
net.inet.udp.checksum: 1
net.inet.udp.maxdgram: 9216
net.inet.udp.recvspace: 42080
net.inet.udp.log_in_vain: 0
net.inet.udp.blackhole: 0
net.inet.accf.unloadable: 0
net.inet.raw.maxdgram: 8192
net.inet.raw.recvspace: 8192
net.link.generic.system.ifcount: 6
net.link.ether.inet.prune_intvl: 300
net.link.ether.inet.max_age: 1200
net.link.ether.inet.host_down_time: 20
net.link.ether.inet.maxtries: 5
net.link.ether.inet.useloopback: 1
net.link.ether.inet.proxyall: 0
net.link.ether.inet.log_arp_wrong_iface: 1
net.inet6.ip6.forwarding: 0
net.inet6.ip6.redirect: 1
net.inet6.ip6.hlim: 64
net.inet6.ip6.maxfragpackets: 256
net.inet6.ip6.accept_rtadv: 0
net.inet6.ip6.keepfaith: 0
net.inet6.ip6.log_interval: 5
net.inet6.ip6.hdrnestlimit: 50
net.inet6.ip6.dad_count: 1
net.inet6.ip6.auto_flowlabel: 1
net.inet6.ip6.defmcasthlim: 1
net.inet6.ip6.gifhlim: 30
net.inet6.ip6.kame_version: 20010528/FreeBSD
net.inet6.ip6.use_deprecated: 1
net.inet6.ip6.rr_prune: 5
net.inet6.ip6.v6only: 0
net.inet6.ip6.rtexpire: 3600
net.inet6.ip6.rtminexpire: 10
net.inet6.ip6.rtmaxcache: 128
net.inet6.ip6.use_tempaddr: 0
net.inet6.ip6.temppltime: 86400
net.inet6.ip6.tempvltime: 604800
net.inet6.ip6.auto_linklocal: 1
net.inet6.icmp6.rediraccept: 1
net.inet6.icmp6.redirtimeout: 600
net.inet6.icmp6.nd6_prune: 1
net.inet6.icmp6.nd6_delay: 5
net.inet6.icmp6.nd6_umaxtries: 3
net.inet6.icmp6.nd6_mmaxtries: 3
net.inet6.icmp6.nd6_useloopback: 1
net.inet6.icmp6.nodeinfo: 3
net.inet6.icmp6.errppslimit: 100
net.inet6.icmp6.nd6_maxnudhint: 0
net.inet6.icmp6.nd6_debug: 0
debug.mddebug: 0
debug.elf_trace: 0
debug.boothowto: -2147483648
debug.free_devt: 0
debug.fdexpand: 0
debug.sizeof.vnode: 168
debug.sizeof.proc: 408
debug.sizeof.specinfo: 68
debug.sizeof.disklabel: 276
debug.sizeof.diskslices: 1820
debug.sizeof.disk: 304
debug.ttydebug: 0
debug.nchash: 8191
debug.ncnegfactor: 16
debug.numneg: 65
debug.numcache: 1356
debug.vfscache: 1
debug.vnsize: 168
debug.ncsize: 36
debug.disablecwd: 0
debug.disablefullpath: 0
debug.numvnodes: 869
debug.wantfreevnodes: 25
debug.freevnodes: 664
debug.rush_requests: 0
debug.vnlru_nowhere: 0
debug.bpf_bufsize: 4096
debug.bpf_maxbufsize: 524288
debug.if_tun_debug: 0
debug.ncr_debug: 0
debug.max_softdeps: 34352
debug.tickdelay: 2
debug.worklist_push: 0
debug.blk_limit_push: 0
debug.ino_limit_push: 0
debug.blk_limit_hit: 0
debug.ino_limit_hit: 0
debug.sync_limit_hit: 0
debug.indir_blk_ptrs: 0
debug.inode_bitmap: 0
debug.direct_blk_ptrs: 0
debug.dir_entry: 0
debug.dircheck: 0
hw.machine: i386
hw.model: Pentium 4
hw.ncpu: 1
hw.byteorder: 1234
hw.physmem: 62787584
hw.usermem: 57425920
hw.pagesize: 4096
hw.floatingpoint: 1
hw.machine_arch: i386
hw.aac.iosize_max: 65536
hw.pcic.irq: 0
hw.pcic.boot_deactivated: 0
hw.pcic.ignore_function_1: 0
hw.pcic.intr_path: 2
hw.pcic.init_routing: 0
hw.dc_quick: 1
hw.sis_quick: 1
hw.wx.txint_delay: 5000
hw.wx.dump_stats: -1
hw.wx.clear_stats: -1
hw.ata.ata_dma: 1
hw.ata.wc: 1
hw.ata.tags: 0
hw.ata.atapi_dma: 0
hw.atamodes: dma,---,pio,---,
hw.instruction_sse: 0
hw.availpages: 15163
machdep.consdev: { major = 12, minor = 255 }
machdep.adjkerntz: -28800
machdep.disable_rtc_set: 0
machdep.wall_cmos_clock: 1
machdep.an_dump: off
machdep.an_cache_mcastonly: 0
machdep.an_cache_iponly: 1
machdep.cs_recv_delay: 570
machdep.do_dump: 1
machdep.pccard.pcic_resume_reset: 1
machdep.pccard.mem_start: 655360
machdep.pccard.mem_end: 1048576
machdep.enable_panic_key: 0
machdep.apm_suspend_delay: 1
machdep.apm_standby_delay: 1
machdep.ispc98: 0
machdep.msgbuf:
machdep.msgbuf_clear: 0
machdep.panic_on_nmi: 1
machdep.i8254_freq: 1193182
machdep.wi_cache_mcastonly: 0
machdep.wi_cache_iponly: 1
machdep.conspeed: 9600
user.cs_path: /usr/bin:/bin:/usr/sbin:/sbin:
user.bc_base_max: 99
user.bc_dim_max: 2048
user.bc_scale_max: 99
user.bc_string_max: 1000
user.coll_weights_max: 0
user.expr_nest_max: 32
user.line_max: 2048
user.re_dup_max: 255
user.posix2_version: 199212
user.posix2_c_bind: 0
user.posix2_c_dev: 0
user.posix2_char_term: 0
user.posix2_fort_dev: 0
user.posix2_fort_run: 0
user.posix2_localedef: 0
user.posix2_sw_dev: 0
user.posix2_upe: 0
user.stream_max: 20
user.tzname_max: 255
p1003_1b.asynchronous_io: 0
p1003_1b.mapped_files: 0
p1003_1b.memlock: 0
p1003_1b.memlock_range: 0
p1003_1b.memory_protection: 0
p1003_1b.message_passing: 0
p1003_1b.prioritized_io: 0
p1003_1b.priority_scheduling: 1
p1003_1b.realtime_signals: 0
p1003_1b.semaphores: 0
p1003_1b.fsync: 0
p1003_1b.shared_memory_objects: 0
p1003_1b.synchronized_io: 0
p1003_1b.timers: 0
p1003_1b.aio_listio_max: 0
p1003_1b.aio_max: 0
p1003_1b.aio_prio_delta_max: 0
p1003_1b.delaytimer_max: 0
p1003_1b.mq_open_max: 0
p1003_1b.pagesize: 4096
p1003_1b.rtsig_max: 0
p1003_1b.sem_nsems_max: 0
p1003_1b.sem_value_max: 0
p1003_1b.sigqueue_max: 0
p1003_1b.timer_max: 0
jail.set_hostname_allowed: 1
jail.socket_unixiproute_only: 1
jail.sysvipc_allowed: 0

论坛徽章:
0
42 [报告]
发表于 2003-06-22 08:26 |只看该作者

在kernel module中我可以调用 time 函数吗?

我后来想了想,关于time,很可能内核里有函数可以用,不过肯定不是走syscall接口罢了。

论坛徽章:
0
43 [报告]
发表于 2003-06-23 16:54 |只看该作者

在kernel module中我可以调用 time 函数吗?

我准备直接用 adjkerntz 但从上面看不出它的原型,我想应该是
   struct { int timezone, int isdst }; 看来我还得查资料。

我发的那个小东西能运行吗?

论坛徽章:
0
44 [报告]
发表于 2003-06-23 17:00 |只看该作者

在kernel module中我可以调用 time 函数吗?

我还有个问题:既然在user space 中 syscall,会发生从 user space -->; kernel space, 并且此时用户进程等待 syscall 的返回(除信号),而系统就去执行 syscall 的操作,那么也就是说系统中有完成 特定 syscall的context呀,那我在kernel module中为什么不能 直接去执行那段 kernel context呢?

论坛徽章:
0
45 [报告]
发表于 2003-06-23 17:00 |只看该作者

在kernel module中我可以调用 time 函数吗?

原帖由 "triphop" 发表:
我准备直接用 adjkerntz 但从上面看不出它的原型,我想应该是
   struct { int timezone, int isdst }; 看来我还得查资料。

我发的那个小东西能运行吗?
    你没发附件给我啊? 你是不是想在屏幕上显示一个晃来晃去的当前时间啊? 要不先简单一点暂不考虑时区?

论坛徽章:
0
46 [报告]
发表于 2003-06-23 17:09 |只看该作者

在kernel module中我可以调用 time 函数吗?

不是,是一个表,有表盘,指针,和asctime输出的字符串;我一定要有时区的内容,要不我得到得是 GMT得时间,这就 没有意义了。

我下次发给你。

论坛徽章:
0
47 [报告]
发表于 2003-06-23 17:13 |只看该作者

在kernel module中我可以调用 time 函数吗?

时区可以以后再加上去的,现在最要紧的是先把你那个表画出来,要知道我已经迫不急待想看一看了

论坛徽章:
0
48 [报告]
发表于 2003-06-23 17:25 |只看该作者

在kernel module中我可以调用 time 函数吗?

这是它得curses程序,当然那个kernel module得实现有很大不同,但显示得效果应该是一样得。


  1. #include <curses.h>;#include <float.h>;#include <math.h>;#include <time.h>;/* To compile: gcc -o tclock tclock.c -lcurses -lm */#ifndef PI#define PI 3.141592654#endif#ifndef EXIT_SUCCESS#define EXIT_SUCCESS    0#endif#define sign(_x) (_x<0?-1:1)#define ASPECT 2.2#define ROUND(value) ((int)((value) + 0.5))#define A2X(angle,radius) ROUND(ASPECT * radius * sin(angle))#define A2Y(angle,radius) ROUND(radius * cos(angle))typedef struct {        int row;        int col;} Angel[13];static Angel  range;static void plot(int x, int y, char col );static void dline(int from_x, int from_y, int x2, int y2, char ch);/* Plot a point */static void plot(int x, int y, char col){        mvaddch(y, x, (chtype) col);}/* Draw a diagonal(arbitrary) line using Bresenham's alogrithm. */static void dline(int from_x, int from_y, int x2, int y2, char ch){        int dx, dy;        int ax, ay;        int sx, sy;        int x, y;        int d;        dx = x2 - from_x;        dy = y2 - from_y;        ax = abs(dx * 2);        ay = abs(dy * 2);        sx = sign(dx);        sy = sign(dy);        x = from_x;        y = from_y;        if (ax >; ay) {                d = ay - (ax / 2);                while (1) {                        plot(x, y, ch);                        if (x == x2)                                return;                        if (d >;= 0) {                                y += sy;                                d -= ax;                        }                        x += sx;                        d += ay;                }        } else {                d = ax - (ay / 2);                while (1) {                        plot(x, y, ch);                        if (y == y2)                                return;                        if (d >;= 0) {                                x += sx;                                d -= ay;                        }                        y += sy;                        d += ax;                }        }}int main(void){        int i, cx, cy;        double mradius, hradius, mangle, hangle;        double sangle, sradius, hours;        int bg;        int hdx, hdy;        int mdx, mdy;        int sdx, sdy;        time_t tim;        struct tm *t;        char szChar[10];        int secFinger = 1, hourFinger = 2;        chtype color;        bool clicks = FALSE;        int count = 0;        initscr();        noecho();        if (has_colors()) {                bg = COLOR_BLACK;                start_color();#ifdef NCURSES_VERSION                if (use_default_colors() == OK)                        bg = -1;#endif                init_pair(secFinger, COLOR_CYAN, bg);                init_pair(hourFinger, COLOR_GREEN, bg);        }        nl();        curs_set(0);        timeout(0);        cbreak();        cx = 39;        cy = 12;        mradius = 9;        hradius = 6;        sradius = 8;        for (i = 0; i < 12; i++) {                sangle = (i + 1) * (2.0 * PI) / 12.0;                sradius = 10;                sdx = A2X(sangle, sradius);                sdy = A2Y(sangle, sradius);                sprintf(szChar, "%d", i + 1);                if ((i + 1) % 3 == 0) {                        chtype hc = COLOR_PAIR(hourFinger);                        hc |= A_BOLD;                        attrset(hc);                        mvaddstr((int) (cy - sdy), (int) (cx + sdx), szChar);                        attroff(hc);                }                else                         mvaddstr((int) (cy - sdy), (int) (cx + sdx), szChar);        }        sradius = 8;        for (i = 0; i <= 12; ++i) {                sangle = ((60 - i * 2) * (2.0 * PI) / 60.0);                 sdx = A2X(sangle, sradius);                sdy = A2Y(sangle, sradius);                range[i].col = cx + sdx;                range[i].row = cy - sdy;        }        touchwin(stdscr);        while (getch() == ERR) {                refresh();                tim = time(NULL);                t = localtime(&tim);                hours = (t->;tm_hour + (t->;tm_min / 60.0));                if (hours >; 12.0)                        hours -= 12.0;                mangle = ((t->;tm_min) * (2 * PI) / 60.0);                mdx = A2X(mangle, mradius);                mdy = A2Y(mangle, mradius);                hangle = ((hours) * (2.0 * PI) / 12.0);                hdx = A2X(hangle, hradius);                hdy = A2Y(hangle, hradius);                sangle = ((t->;tm_sec) * (2.0 * PI) / 60.0);                sdx = A2X(sangle, sradius);                sdy = A2Y(sangle, sradius);                dline(cx, cy, cx + hdx, cy - hdy, '.');                dline(cx, cy, cx + mdx, cy - mdy, '*');                mvaddstr(5, 37, "OMEGA");//如果嫌OMEGA挡住指针,可放在上两行之上,反正我喜欢这样,呵呵                color = COLOR_PAIR(secFinger);                color |= A_BOLD;                attrset(color);                plot(cx + sdx, cy - sdy, '+');                attroff(color);                mvaddstr(23, 28, ctime(&tim)); //向右移动了点,显得好看些                refresh();                if (t->;tm_min == 59)                  if ((cx + sdx) == range[(int) hours].col &&                                  (cy - sdy) == range[(int) hours].row  )                     clicks = TRUE;                if (clicks == TRUE) {                        if (count == 0)                                 beep();                        count =(++count) % 2;                        if ((cx + sdx) == range[0].col                                         && (cy - sdy) == range[0].row) {                                clicks = FALSE;                                count = 0;                        }                }//加入了下面的 if 语句, 使之在 1:00:00 和 13:00:00报时if ((int) hours == 1 && t->;tm_min == 0 && t->;tm_sec == 0)                        beep();                napms(1000);                plot(cx + sdx, cy - sdy, ' ');                dline(cx, cy, cx + hdx, cy - hdy, ' ');                dline(cx, cy, cx + mdx, cy - mdy, ' ');        }        curs_set(1);        endwin();        return EXIT_SUCCESS;}
复制代码

可能贴上来是乱得,你用 indent来处理吧
indent -kr -cli3 omega.c
[/code]

论坛徽章:
0
49 [报告]
发表于 2003-06-23 17:30 |只看该作者

在kernel module中我可以调用 time 函数吗?

怪哉!你的BSD是什么版本?我的indent没有kr参数啊?以前在linux上见过一个console时钟,还不错!不过在kernel里有cursor库可用吗?怀疑!现在的那些saver好象是用的直接写视频内存喔!还没仔细看过,有时间研究一下。。。

论坛徽章:
0
50 [报告]
发表于 2003-06-23 17:36 |只看该作者

在kernel module中我可以调用 time 函数吗?

那个indent 是gnu indent,我一直用它,它有这个option,我只是说显示效果应该是一样得,但实现是完全不同得。我不用别的lib,是直接写屏
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP