summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libc (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Modified to avoid building certain files under UNIX.Joel Sherrill1998-10-131-3/+11
|
* New files.Joel Sherrill1998-10-122-0/+164
|
* Removed fork(), execv(), and wait() since they are now stubbed in theJoel Sherrill1998-10-121-21/+0
| | | | POSIX API.
* Added opendir and readdir.Joel Sherrill1998-10-121-1/+1
|
* Patch from Ian Lance Taylor <ian@airs.com>:Joel Sherrill1998-10-011-5/+8
| | | | | | | | 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.
* Modifed to zero out the C heap if the CPU Table indicates that theJoel Sherrill1998-09-231-0/+15
| | | | RTEMS workspace is to be zeroed out.
* Patch from Aleksey (Quality Quorum <qqi@world.std.com>):Joel Sherrill1998-09-232-4/+10
| | | | | | | | | | | 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.
* Patch from Eric Norum:Joel Sherrill1998-09-212-8/+3
| | | | | | | | 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.
* Patch from Emmanuel Raguet <raguet@crf.canon.fr>:Joel Sherrill1998-08-311-3/+0
| | | | | I have reworked the ethernet driver for the BSP pc386 and here is the patch to apply.
* Patch from Eric Norum <eric@skatter.usask.ca>:Joel Sherrill1998-08-311-4/+2
| | | | | | | | | | | | | | 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?
* Fix from Eric Norum <eric@skatter.usask.ca>:Joel Sherrill1998-08-211-14/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "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 (); } ===============================================================
* Added initialization of missing termios structure entries.Joel Sherrill1998-08-211-2/+3
|
* Closed window thanks to patch from Eric Norum.Joel Sherrill1998-07-281-5/+3
|
* Initialized tty->refcount to 0. When (for whatever reason) malloc()Joel Sherrill1998-07-171-0/+3
| | | | | | | | | | | | | | 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.
* Patch from Dario Alcocer <alcocer@connectnet.com>. His comments:Joel Sherrill1998-07-171-0/+2
| | | | | | | | | 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.
* New file to satisfy readdir() family.Joel Sherrill1998-07-062-1/+15
|
* Added _stat_r and changed spacing.Joel Sherrill1998-07-011-33/+47
|
* Added freebsd support from Dario Alcocer <alcocer@connectnet.com>.Joel Sherrill1998-06-181-0/+14
|
* Corrected so it returns the correct date. Previously was getting the numberJoel Sherrill1998-06-181-11/+28
| | | | | | 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.
* Added some missing files per Eric Norum.Joel Sherrill1998-06-021-1/+1
|
* Added tcdrain(), cfgetospeed(0, cfsetospeed(), cfgetispeed(), andJoel Sherrill1998-05-224-6/+110
| | | | cfsetispeed().
* Patch to add return status to rtems_termios_enqueue_raw_characters fromJoel Sherrill1998-05-202-2/+4
| | | | | | | | | | | | | | | Eric Norum per request from Geoffroy Montel: > The rtems_termios_enqueue_raw_characters function type is void. > The problem is that I can't return an error message if the input > buffer is full. > Could we add a return value? Sure, but what would you do with the overflow indication? POSIX says, ``when the input limit is reached, the saved characters are thrown away without notice''. Anyhow, the change is so small I've done it and enclosed the patch.
* Added tcdrain() from Eric NorumJoel Sherrill1998-05-201-0/+1
|
* Addition of tcdrain() from Eric Norum.Joel Sherrill1998-05-192-0/+18
|
* Removed prototype of rtems_libio_config() per Chris Johns' eagle eye.Joel Sherrill1998-05-191-1/+0
|
* new file to support execv family support in newlibJoel Sherrill1998-05-112-1/+32
|
* execv*() now comes from newlib.Joel Sherrill1998-05-111-0/+2
|
* Patch from Eric Norum to switch to termios callback structure, addJoel Sherrill1998-05-042-38/+41
| | | | | support for device driver support on tcsetattr(), and hardware flow control callbacks.
* Removed redundant implementation of tcgetattr and tcsetattr.Joel Sherrill1998-04-271-20/+0
|
* rtems_libio_number_iops is now defined in confdefs.h so the maximumJoel Sherrill1998-04-181-1/+1
| | | | file descriptors is user configurable.
* Numerous changes which in total greatly reduced the amount of sourceJoel Sherrill1998-04-151-18/+0
| | | | | | | | | | | | code in each BSP's bspstart.c. These changes were: + confdefs.h now knows libio's semaphore requirements + shared/main.c now copies Configuration to BSP_Configuration + shared/main.c fills in the Cpu_table with default values This removed the need for rtems_libio_config() and the constant BSP_LIBIO_MAX_FDS in every BSP. Plus now the maximum number of open files can now be set on the gcc command line.
* More stuff removed as a result of using newlib's isatty() implementation.Joel Sherrill1998-04-062-15/+0
| | | | These were noticed by Eric Norum.
* Removed isatty() since we are now using newlib's implementation asJoel Sherrill1998-04-033-20/+0
| | | | a result of enabling the newlib POSIX directory.
* GO32 does not have sockets.Joel Sherrill1998-03-271-0/+2
|
* Should have included <rtems.h> before checking for ifdef RTEMS_UNIX.Joel Sherrill1998-03-271-2/+2
| | | | Bug report from Olivier Hainque <hainque@inf.enst.fr> on SPARC Solaris 2.6.
* Removed blank line.Joel Sherrill1998-03-201-1/+1
|
* updated copyright to 1998Joel Sherrill1998-02-1710-10/+10
|
* Patch from Eric Norum <eric@skatter.usask.ca>:Joel Sherrill1998-02-172-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I've gone through and cleaned up the TFTP driver so that it fits into the libio system. Here's the comment from the new driver: /* * Usage: * * To open `/bootfiles/image' on `hostname' for reading: * fd = open ("/TFTP/hostname/bootfiles/image", O_RDONLY); * * The `hostname' can be a symbolic name or four * dot-separated decimal values. * * To open a file on the host which supplied the BOOTP * information just leave the `hostname' part empty: * fd = open ("/TFTP//bootfiles/image", O_RDONLY); * */ You can `fopen' TFTP files the same way: fp = fopen (fullname, "r"); nread = fread (cbuf, sizeof cbuf[0], sizeof cbuf, fp); The diff's are included below. I've also modified the TFTP demo program and the bootstrap PROM example. They should be on my ftp site `soon'. The one thing I don't like is the way I had to do an end-run on the libio routines to get errno passed back from my driver to the application (since there are some errno codes that don't map to RTEMS status codes). My approach was to set errno in the driver and have the driver routine return an RTEMS status code that I `know' isn't in the errno_assoc[] in libio.c. Perhaps there should be an RTEMS_TRANPARENT_ERRNO status code (or something similar) which driver routines could return to indicate that the driver routine has set errno and that the libio routines shouldn't attempt to map the returned status code to errno. Actually, I think the entire I/O system needs looking at -- as you've already mentioned. The hacks I've dropped in to syscalls.c to make fstat work, for example, are *not* shining examples of good code......
* Added call to libc_wrapup() in _exit. This fixes a problem whereJoel Sherrill1998-02-031-0/+1
| | | | | the atexit routines on the global reentrancy structure were not invoked. But it does not seem like a 100% correct solution.
* Big patch form Ralf Corsepius described in this email:Joel Sherrill1998-01-301-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Here is the result of my nightly work to get RTEMS_ROOT=$srcdir working with different shells and relative/absolute paths. What I did is relatively simple in principle: Instead of setting RTEMS_ROOT in configure.in and then let configure substitute @RTEMS_ROOT@ inside the Makefiles, I now let each Makefile set RTEMS_ROOT from each Makefile's @top_srcdir@ value. The difference is subtile, but with enormous side effects: - If RTEMS_ROOT is set in configure, then the same single value will be propagated to all Makefiles. This breaks using relative paths, as the relative path to the root of the source tree is used inside of all subdirectory Makefiles. - Now each Makefile.in sets RTEMS_ROOT = @top_srcdir@. top_srcdir is computed individually by configure for each single Makefile.in, hereby receiving the correct value, no matter if relative or absolute paths are used. To get this working, I needed to remove setting RTEMS_ROOT from target.cfg.in, because this overrides the value of RTEMS_ROOT from each individual Makefile. Furthermore, I removed RTEMS_CUSTOM from the Makefiles and replaced all "include $(RTEMS_CUSTOM)" directives with"include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP)". Perhaps you don't like this, but I think, to have one variable less is clearer and easier to understand than having several variables refering to the next one. I enclose a small patch to this mail, which - fixes the config.h problem (to finally clearify misunderstands) - removes assignment/subsitution of RTEMS_ROOT from configure.in - contains a workaround for the application Makefile's RTEMS_ROOT problem (reported by Eric) - removes some unused lines from the toplevel Makefile.in - removes assignment of RTEMS_ROOT from make/target.cfg.in
* Corrected Linux port for glibc2Joel Sherrill1998-01-302-1/+3
|
* Solaris port updates from Chris JohnsJoel Sherrill1998-01-232-6/+8
|
* Added _times_r.Joel Sherrill1998-01-191-0/+7
|
* more info from EricJoel Sherrill1998-01-191-0/+6
|
* Patch from Eric Norum:Joel Sherrill1998-01-193-7/+25
| | | | | With this in place, it is possible to fdopen a TCP stream socket and getc/fprintf/etc. on the STDIO stream!
* Jennifer found some uninitialized variables:Joel Sherrill1998-01-161-1/+7
| | | | | | + major and minor number elements in rtems_termios_open. + arg->ioctl_return in rtems_termios_ioctl routine.
* Changed initial settings of first time.Joel Sherrill1998-01-061-3/+5
|
* Corrected prototypes for all termios console write driver entries toJoel Sherrill1997-12-222-3/+4
| | | | properly reflect the const on the buffer pointer being passed in.
* Modified a lot of files to take a first cut at supporting building fromJoel Sherrill1997-12-101-1/+4
| | | | | any directory in the build tree. The only variable which must be set before the command "gmake" is invoked is RTEMS_BSP (e.g. RTEMS_BSP=erc32).
* Inclusion of PC386 BSP submitted by Pedro Miguel Da Cruz Neto RomanoJoel Sherrill1997-12-011-0/+2
| | | | | <pmcnr@camoes.rnl.ist.utl.pt> and Jose Rufino <ruf@asterix.ist.utl.pt> of NavIST (http://pandora.ist.utl.pt/).