Commit Graph

148 Commits

Author SHA1 Message Date
Joel Sherrill
707d4d00d6 Removed warning for const removal. 1999-03-30 17:42:25 +00:00
Jennifer Averett
77c81fd2a1 Removed an uninitialized variable. 1999-03-29 18:24:34 +00:00
Joel Sherrill
a432c4b710 Fix based on bug report from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:
There seems to be an ugly dependency between posix-headers and
    libcsupport.

    Configuring rtems with
    ../rtems-rc-19990324-0/configure \
    --target=i386-rtems \
    --prefix=<somewhere> \
    --disable-posix

    "make RTEMS_BSP=pc386" results into:

    [...]
    /opt/rtems/bin/i386-rtems-gcc --pipe
    -B/users/rtems/src/multi/build/pc386/lib/ -specs bsp_specs -qrtems
    -I/users/rtems/src/multi/build/pc386/lib/include/networking  -g -Wall
    -ansi -fasm  -O4 -fomit-frame-pointer    -c -o o-pc386/utime.o
    ../../../../../rtems-rc-19990324-0/c/src/lib/libc/utime.c
    In file included from
    ../../../../../rtems-rc-19990324-0/c/src/lib/libc/utime.c:16:
    /opt/rtems/i386-rtems/include/utime.h:4: sys/utime.h: No such file or
    directory
    ../../../../../rtems-rc-19990324-0/c/src/lib/libc/utime.c:24: warning:
    `struct utimbuf' declared inside parameter list
    ../../../../../rtems-rc-19990324-0/c/src/lib/libc/utime.c:24: warning:
    its scope is only this definition or declaration,
    ../../../../../rtems-rc-19990324-0/c/src/lib/libc/utime.c:24: warning:
    which is probably not what you want.
    ../../../../../rtems-rc-19990324-0/c/src/lib/libc/utime.c: In function
    `utime':
    ../../../../../rtems-rc-19990324-0/c/src/lib/libc/utime.c:34:
    dereferencing pointer to incomplete type
    ../../../../../rtems-rc-19990324-0/c/src/lib/libc/utime.c:34:
    dereferencing pointer to incomplete type
    make[4]: *** [o-pc386/utime.o] Error 1
    make[3]: *** [all] Error 1
    make[2]: *** [all] Error 1
    make[1]: *** [all] Error 1
    make[1]: Leaving directory `/lfs/poseidon/users/rtems/src/multi/build/c'

    make: *** [all] Error 1

    Apparently sys/utime.h is one of the posix headers and therefore gets
    not installed (I suppose this is correct).

    IMO, this probably indicates that sys/utime.h has to be moved to another
    include subdirectory and should not be part of the posix-package.
    [AFAIK, sys/*.h are system dependent headers, so why should it be a
    posix-header? - Hmm]
1999-03-24 22:52:47 +00:00
Joel Sherrill
4fb9af858e Another cleanup patch for the previous rejected hunk. 1999-03-19 23:26:11 +00:00
Joel Sherrill
c0a3642981 A cleanup patch on fcntl.c from Eric Norum <eric@skatter.usask.ca> for
2 lines of code that did not get included when Joel tried to manually
add a rejected patch.
1999-03-19 22:59:20 +00:00
Joel Sherrill
af0200363e Patch from Eric Norum <eric@skatter.usask.ca> that adds external
fcntl support and an external fcntl handler for sockets.
1999-03-19 21:51:58 +00:00
Joel Sherrill
23c4bbf58a Use proper include for libio.h. 1999-03-16 01:41:16 +00:00
Joel Sherrill
3195d9c0a5 Added code to translate internal libio flags to POSIX style flags. 1999-03-08 21:39:16 +00:00
Joel Sherrill
1bb170208b Added support for F_GETFL and F_SETFL. 1999-03-08 21:38:56 +00:00
Joel Sherrill
3ef87981eb Added F_GETFL support so the fdopen() implementation in newlib 1.8.1
would work.  At the same time, the initial implementation of F_SETFL
was added.  A support routine was added to convert internal libio
flags back to the POSIX style.  Eventually the internal representation
should be eliminated in the interest of simplicity and code reduction.
This problem was reported by Jake Janovetz <janovetz@tempest.ece.uiuc.edu>.
1999-03-06 18:09:15 +00:00
Joel Sherrill
73f6236bc0 Patch from Eric Norum <eric@skatter.usask.ca> to eliminate external
IO handlers scheme that was implemented originally just to support
sockets.  The file system IO switch is more general and works fine.
1999-03-01 22:40:08 +00:00
Joel Sherrill
3cf8394af5 Changed IMFS to use IMFS_NAME_MAX as the maximum length of a basename
rather then NAME_MAX.  NAME_MAX is 255 and that lets IMFS chew up memory
too fast.  Perhaps in the future, the places in IMFS that put a maximum
length name string on the stack and the jnode structure does not include
a maximu length name string can be fixed so this is not a problem.
1999-02-24 20:58:47 +00:00
Joel Sherrill
edfb0eba88 GLobal reentrancy structure is now dynamically initialized. 1999-02-18 15:11:41 +00:00
Joel Sherrill
7e2a525b6d Patch from Eric Valette <valette@crf.canon.fr> to undo the patch
that added ifdef on the pc386.
1999-02-15 18:56:08 +00:00
Joel Sherrill
9619ff36e9 Set the read/write offset to 0 when the file is opened. The ACVC had a test
that performed the sequence open/write/close/open/read/close on a file.
It did not get the correct result since the file descriptor was reused.
1999-02-10 17:05:55 +00:00
Joel Sherrill
3165b4d365 Added getcwd(). 1999-02-10 17:04:12 +00:00
Joel Sherrill
2f87c84349 Corrected spacing and added some new error checks that were needed
to avoid dereferencing NULLs.
1999-02-05 00:28:43 +00:00
Joel Sherrill
c9df8d8f7c Patch from Eric Norum <eric@skatter.usask.ca> to set more flags in
rtems_bsdnet_makeFdForSocket().
1999-01-28 18:42:04 +00:00
Joel Sherrill
d78b7a9ed7 Added libio_sockets.c to hold support routines for networking code. 1999-01-26 01:49:31 +00:00
Joel Sherrill
2d733c424b More general fix based on bug report and patch from Ian Lance Taylor
<ian@airs.com> to fix this problem:

    There is a small bug in __rtems_close in c/src/lib/libc/libio.c.  It
    does not check whether the file descriptor it is passed is open.  This
    can cause it to make a null dereference if it is passed a file
    descriptor which is in the valid range but which was not opened, or
    which was already closed.
1999-01-20 15:48:22 +00:00
Joel Sherrill
eb6fafd33b Per bug report from Jiri Gaisler that RTEMS would no longer build
with the --disable-posix option, stubs for some routines (_getpid_r and
_kill_r) that are normally defined with POSIX were added.
1999-01-19 20:19:22 +00:00
Joel Sherrill
73441b6fef Removed blank lines 1999-01-04 16:26:37 +00:00
Joel Sherrill
e22d644abe Corrected prototype to confirm to POSIX 1003.1b. 1998-12-14 23:01:43 +00:00
Joel Sherrill
cca44008d8 Merged Eric Norum's select patch that was based on 4.0 and resolved
all conflicts.
1998-12-10 23:31:54 +00:00
Joel Sherrill
a3d0b8a79a Patch from Ian Lance Taylor <ian@airs.com>:
From: Eric Norum <eric@skatter.usask.ca>
   Date: Sat,  5 Dec 98 13:20:51 -0600

   What do you think of this patch?  It implements your `tap'
   suggestion in a way that adds support for all ethernet devices with
   no driver modifications.  I also added a return value from the tap
   function.  If the return value is zero, the packet will be passed up
   the chain as usual.  If the return value is non-zero the mbuf holding
   the packet will be freed and the packet will be dropped.

   If you like it, please submit it to Joel.

   I guess there needs to be an addition to the network documentation
   describing the additional ioctl's -- and a big warning that the tap
   function is called from a context that holds the network semaphore.

   Here is Eric's patch.  I've tested it a bit, and made a couple of
   trivial changes.  This is certainly better than mine: it should work
   for all Ethernet drivers.
   ==================================================

   The only concern I have about this patch is that the tap function may
   want to fiddle with the mbuf, calling functions like m_pullup and the
   like.  If those force the networking code to rearrange the mbuf
   structure, then the caller's call to m_freem may crash.  I don't know
   if this is a realistic concern--I don't know enough about the mbuf
   layer.
1998-12-10 19:42:29 +00:00
Jennifer Averett
5822f437a1 Added source for F_DUPFD. 1998-12-03 22:17:26 +00:00
Jennifer Averett
7a3878b26f Modifications for RTEMS_UNIX. 1998-12-03 22:17:13 +00:00
Joel Sherrill
07a3253de2 Added base version of file system infrastructure. This includes a major
overhaul of the RTEMS system call interface.  This base file system is
the "In-Memory File System" aka IMFS.

The design and implementation was done by the following people:

  + Joel Sherrill (joel@OARcorp.com)
  + Jennifer Averett (jennifer@OARcorp.com)
  + Steve "Mr Mount" Salitasc (salitasc@OARcorp.com)
  + Kerwin Wade (wade@OARcorp.com)

PROBLEMS
========
  + It is VERY likely that merging this will break the UNIX port.  This
    can/will be fixed.

  + There is likely some reentrancy/mutual exclusion needed.

  + Eventually, there should be a "mini-IMFS" description table to
    eliminate links, symlinks, etc to save memory.  All you need to
    have "classic RTEMS" functionality is technically directories
    and device IO.  All the rest could be left out to save memory.
1998-11-23 19:07:58 +00:00
Joel Sherrill
692b9f7fdd Merged Vista SCORE603e, Radstone PPCn_60x, and DY-4 DMV177 BSPs along
with libchip.
1998-10-28 19:17:16 +00:00
Joel Sherrill
d3b34d259e Changed all of these to stubs. 1998-10-22 16:15:40 +00:00
Joel Sherrill
0cd2bd96c3 Added rest of opendir family and made it compile. 1998-10-13 18:04:16 +00:00
Joel Sherrill
928395ea56 New files. 1998-10-13 16:07:38 +00:00
Joel Sherrill
22bb7cd136 New files. 1998-10-12 17:28:33 +00:00
Joel Sherrill
388be68fbc Patch from Ian Lance Taylor <ian@airs.com>:
The reentrant versions of the malloc functions in
        c/src/lib/libc/malloc.c
    do not match the definitions in newlib.  These will be used if you use
    newlib routines such as fdopen.  I believe this patch to malloc.c is
    needed to provide the correct versions.
1998-10-01 21:44:31 +00:00
Joel Sherrill
3b93a2dee1 Modifed to zero out the C heap if the CPU Table indicates that the
RTEMS workspace is to be zeroed out.
1998-09-23 16:34:23 +00:00
Joel Sherrill
8a496e462e Patch from Aleksey (Quality Quorum <qqi@world.std.com>):
1. Finally fixes raw interrupts for pc386
    2. Makes some minor cleanup in console and startup
    3. Makes rtems_termios_dequeue_characters() to return count of
       outstanding chars - it allows to simplify console isrs a little
       bit.
    4. pc386 uart modified to be friendlier to termios parameter changes,
       to have minor performance improvement and to take advantage of
       of above termios modification.
1998-09-23 13:20:34 +00:00
Joel Sherrill
30ba7529f1 Patch from Eric Norum:
I fixed the problems noted by Victor Vengerov.

    1) Fix typo in cfsetispeed().
    2) In rtems_termios_open, ensure that args->iop->data1 is set before calling
    device-specific open routine.
1998-09-21 00:01:26 +00:00
Joel Sherrill
b29378e052 Corrected spelling error. 1998-09-11 19:17:49 +00:00
Joel Sherrill
d9d75fce47 Patch from Emmanuel Raguet <raguet@crf.canon.fr>:
I have reworked the ethernet driver for the BSP pc386 and
  here is the patch to apply.
1998-08-31 23:06:50 +00:00
Joel Sherrill
85734b3c8f Patch from Eric Norum <eric@skatter.usask.ca>:
I think I figured out why rtems_panic was locking up instead of
    shutting down the executive and returning to the code that called
    boot_card().

    Later on there is code to print some messages on the standard error
    stream, a recursive call back to rtems_verror (through rtems_error)
    and finally a call to _exit().

    I think that the _Thread_Disable_dispatch() is preventing the final
    context switch back to the boot_card() code.  Does this sound right
    to you?
1998-08-31 22:53:42 +00:00
Joel Sherrill
b3fd16416c Fix from Eric Norum <eric@skatter.usask.ca>:
"Thomas Doerfler" <td@imd.m.isar.de> wrote:
>
> While implementing/testing the console/termios support for
> PPC403 in RTEMS-4.0.0-beta3, I am stuck at a certain location in
> termios.c:
>
> During "rtems_termios_initialize", the main control data structure
> "*tty" is allocated using malloc(). (Note, that malloc does not
> clear the allocated memory and my BSP does not clear memory during
> startup). Furtheron, a lot of fields of that structure are
> initialized, but the field "rawOutBufState" is not, and therefore
> keeps an arbitrary contents.
>
> When "osend()" is called the first time(with the serial device
> driver working in interrupt mode), termios gets stuck and will not
> call the device drivers output function.
>
> My questions now are:
>
> - anybody already experienced this bug?
> - is it a bug at all or did I do anything fundamentally wrong?
> - is there already a common bugfix for that?
>
> I don't like poking around in other people code, as long as I am
> not absolutely sure, what I do...

Yes, there's a bug there.
I thought that Joel had patched this already, but here's a patch to
fix this.  This patch also addresses a concern that many others have
raised regarding enabling and disabling of transmitter interrupts.

First, here's the example I've been using of a simple UART-style
interrupt-driven driver:
===============================================================
void
device_write_routine (int minor, char *buf, int count)
{
        UART->control_register &= ~UART_TRANSMITTER_READY;
        UART->output_register = *buf;
        UART->control_register |= UART_TRANSMIT_INTERRUPT_ENABLE;
}

void
device_transmit_interrupt_routine (int vector)
{
        UART->control_register &= ~UART_TRANSMIT_INTERRUPT_ENABLE;
        rtems_termios_dequeue_characters (device_ttyp, 1);
}
==============================================================


Several people have expressed their concern about the disable/enable
of transmitter interrupts for every character.  On some machines
this disable/enable is an expensive operation.  With the attached
patch applied you can write the two routines as:
==============================================================
void
device_write_routine (int minor, char *buf, int count)
{
        code_to_clear_transmitter_ready_status ();
        if (device_ttyp->rawOutBufState == rob_idle)
                code_to_enable_transmitter_interrupts ();
        code_to_send_one_character_to_transmitter (*buf);
}

void
device_transmit_interrupt_routine (int vector)
{
        rtems_termios_dequeue_characters (device_ttyp, 1);
        if (device_ttyp->rawOutBufState == rob_idle)
                code_to_disable_transmitter_interrupts ();
}
===============================================================
1998-08-21 15:32:19 +00:00
Joel Sherrill
bbdab89563 Added initialization of missing termios structure entries. 1998-08-21 12:52:08 +00:00
Joel Sherrill
39e6e65a2c Base files 1998-08-19 21:32:28 +00:00
Joel Sherrill
bd7c547d20 Closed window thanks to patch from Eric Norum. 1998-07-28 16:49:36 +00:00
Joel Sherrill
4555bc1eb5 Initialized tty->refcount to 0. When (for whatever reason) malloc()
returned a buffer which was not zero-filled, the reference count
was not correct.  When the application exitted, the "lastClose"
handler was not being called to flush the output.  This problem
had manifested itself on a variety of platforms.

The function rtems_termios_dequeue_characters() incorrectly incremented
the buffer pointers when it was invoked and there were no characters
in the ring buffer.  This problem had also manifested itself on a
variety of platforms.  The symptom was a strange repeating of the
data in the transmitter buffer when the transmitter serial device
was supposed to go idle.
1998-07-17 22:34:54 +00:00
Joel Sherrill
6e65840670 Patch from Dario Alcocer <alcocer@connectnet.com>. His comments:
Haven't had a chance to do an extensive shake-out of 980710, but it
  builds just fine on FreeBSD 2.2.5 (after termios is fixed using the
  attached patch), and the tests run fine.  FYI: FreeBSD doesn't support
  System V IPC out of the box, but one only needs to add three options
  to the kernel build configuration file, recompile the kernel, and
  you're ready.
1998-07-17 13:05:03 +00:00
Joel Sherrill
270d58fe4c New file to satisfy readdir() family. 1998-07-06 19:00:33 +00:00
Joel Sherrill
9a6994b490 Added freebsd support from Dario Alcocer <alcocer@connectnet.com>. 1998-06-18 15:22:35 +00:00
Joel Sherrill
ce691c51fd Corrected so it returns the correct date. Previously was getting the number
of seconds since 1988 from RTEMS and not adding in the 1970-1988 correction
factor.  Plus removed checks for data/time set since POSIX does not permit
this call to fail.  GNAT 3.12 depends on this.
1998-06-18 15:14:48 +00:00
Joel Sherrill
ecc9737f40 Added a public interface to the chain handler. 1998-06-18 15:12:27 +00:00