<time .h> in the standard,Why?

S

sathyashrayan

Friends,
As I was going through the standard draft of C (C99) I come across
the header file <time.h>. I wonder why the standard has included the
header file since it depends on the hardware that we work with. If
somebody wants to access the time of the system then he has to use the
interrupt 1A in the real mode or access the timer chip (port id
70-70h) pmode but that is off-topic in this group.
I concluded that it is because of the running-time analysis that is
needed for a program.
(Correct me if I am wrong)
If the standard can include a *portable* way of accessing a hardware
why not the standard include for other routines also such as keyboard,
graphic device drivers, hard disk etc.
 
Z

Zhi Liu

hi,
The design of C is not to hide the hardware but to provide a general way
of programming on different platforms.
C runs on real system not the virtual machine.So almost every action has
something to do with the hardware. Standard I/O, setjmp, math lib....
In your question, the time library may be support by the hardware or the
OS or anything else, depending on the compiler and system architecture.
There is no *protable* way to access hardware, but *portable* software
interface implemented by compiler and libc.
 
J

Jack Klein

Friends,
As I was going through the standard draft of C (C99) I come across
the header file <time.h>. I wonder why the standard has included the
header file since it depends on the hardware that we work with. If

Do you think so? Why do you think so? Do you think there is only one
hardware computer platform in the entire universe?
somebody wants to access the time of the system then he has to use the
interrupt 1A in the real mode or access the timer chip (port id

There are many, many computers out there that don't have an "interrupt
1A", or "real mode".
70-70h) pmode but that is off-topic in this group.

Or "port id" anything, or "pmode".

None of these things on any Macintosh or SparcStation, just to name a
few.
I concluded that it is because of the running-time analysis that is
needed for a program.
(Correct me if I am wrong)

You are wrong.
If the standard can include a *portable* way of accessing a hardware
why not the standard include for other routines also such as keyboard,
graphic device drivers, hard disk etc.

Why do you think that this has anything to do with accessing hardware,
let alone specific hardware in one specific type of computer? Opening
and reading a file does not access hardware, at least not as far as C
is concerned. The underlying platform how to connect that stream to
some device or other.

On many networks, all computers update their notion of real-world time
from a designated server. There are time servers on the Internet as
well. Computers with no hardware time-of-day clock could get their
time from them.

Nor does the existence of the function time() even require that all
computers be able to provide this value. An implementation merely
returns time_t(-1) if it cannot.

Your horizon of both computer hardware and computer programming are
far too narrow, almost tragically so.
 
D

Darrell Grainger

Friends,
As I was going through the standard draft of C (C99) I come across
the header file <time.h>. I wonder why the standard has included the
header file since it depends on the hardware that we work with. If
somebody wants to access the time of the system then he has to use the
interrupt 1A in the real mode or access the timer chip (port id
70-70h) pmode but that is off-topic in this group.
I concluded that it is because of the running-time analysis that is
needed for a program.
(Correct me if I am wrong)

Consider yourself corrected. The time.h header files is there because
there is a standard set of functions associated with time and clocks. This
is nothing new to the C standard.
If the standard can include a *portable* way of accessing a hardware
why not the standard include for other routines also such as keyboard,
graphic device drivers, hard disk etc.

If I take a moment and think about it, I am hard pressed to thing of a
system that does not have some sort of clock or timer on it. The standard
has allowed for systems that don't have a clock but I believe the norm is
for a system to have a clock.

I'm looking at four development systems on my desk that have no keyboard,
no graphics and no hard drive support. Many of the systems I work with are
like this. When I do a printf the standard output is to a memory buffer
and a signal pin to let the host computer know there is data in the C I/O
buffer ready for retrieval. My development environment retrieves the data
from the target computer and displays it on the host computer.

I have no need for graphic drivers or hard drive support. There is an
entire world of development out there that is very different from Windows,
UNIX and MacOS.

NOTE: there are libraries, like curses, that are supported by many
platforms. They attempt to do for displays what time.h does for
clocks/timers.
 
D

Dan Pop

In said:
As I was going through the standard draft of C (C99) I come across
the header file <time.h>. I wonder why the standard has included the
header file since it depends on the hardware that we work with.

That's precisely why it was included in the standard. <time.h> is no
different from <stdio.h> from this point of view: both hide the
hardware/OS specific details and provide an implementation-neutral
interface to the application programmer.
If
somebody wants to access the time of the system then he has to use the
interrupt 1A in the real mode or access the timer chip (port id
70-70h) pmode but that is off-topic in this group.

And completely useless to people who don't program on PC hardware, as
well as to people who do program on PC hardware, but whose OS doesn't
allow direct access to the hardware ports.

While <time.h> works for everybody, the same way, as long as the
underlying hardware can keep track of the wall clock time.

Dan
 
A

August Derleth

Zhi said:
hi,
The design of C is not to hide the hardware but to provide a general way
of programming on different platforms.
C runs on real system not the virtual machine.So almost every action has
something to do with the hardware. Standard I/O, setjmp, math lib....
In your question, the time library may be support by the hardware or the
OS or anything else, depending on the compiler and system architecture.
There is no *protable* way to access hardware, but *portable* software
interface implemented by compiler and libc.

This is correct, but top-posting like you just did is considered rude.

Do as I'm doing now, and as most people here do, and put your reply
/below/ the text you are replying to. It makes it much, much easier for
people to follow the thread of the conversation.

So, to put it briefly, you could really make a big hit here (in a good
way :) ) if you just put your text below what you are replying to.

Thanks.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,756
Messages
2,569,535
Members
45,007
Latest member
OrderFitnessKetoCapsules

Latest Threads

Top