summaryrefslogtreecommitdiffstats
path: root/cpukit (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Added system task attribute to allow one to create a task with "0" priorityJoel Sherrill1998-08-214-9/+40
| | | | via the user api.
* Patch from Eric Valette <valette@crf.canon.fr>:Joel Sherrill1998-08-211-0/+90
| | | | | | | | | | Here is a patch that enables to catch exception and get message before crashing RTEMS :) It should be generic to any Intel port although enabled only for pc386 BSP... [Joel] I fixed the bug I introduced in irq_asm.s...
* Spacing changesJoel Sherrill1998-08-211-1/+0
|
* 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 (); } ===============================================================
* All warnings removed.Joel Sherrill1998-08-217-6/+25
|
* Added initialization of missing termios structure entries.Joel Sherrill1998-08-211-2/+3
|
* Fixed warning about pointer/integer conversion which turned out to beJoel Sherrill1998-08-211-1/+1
| | | | a missed "&" on a write.
* Patches from Eric NorumJoel Sherrill1998-08-202-3/+19
|
* Added CVS IdsJoel Sherrill1998-08-2064-0/+201
|
* Fixed many warnings.Joel Sherrill1998-08-2034-82/+160
|
* FreeBSD stack compiles for the first time (except libc/strsep.c).Joel Sherrill1998-08-209-0/+298
|
* Base filesJoel Sherrill1998-08-19212-0/+59532
|
* Patch from Eric Valette <valette@crf.canon.fr>:Joel Sherrill1998-08-191-1/+8
| | | | | | | - Use the "hlt" instruction for the Idle thread, - Optimise interrupt PATH leadding to thread wakeup, - Preparation for Intel exception management that should come before the end of the week...
* Automatic CPU type detection code from Eric Valette <valette@crf.canon.fr>.Joel Sherrill1998-08-052-0/+2
| | | | Enabled on the pc386.
* Merged patch from David Fiddes <D.J.Fiddes@hw.ac.uk> to add ColdFireJoel Sherrill1998-08-012-2/+18
| | | | specific register macros and correct code in rtems.s.
* Closed window thanks to patch from Eric Norum.Joel Sherrill1998-07-281-5/+3
|
* Patch from Eric VALETTE <valette@crf.canon.fr>:Joel Sherrill1998-07-231-99/+0
| | | | | | | | | | | | | Here is a enhanced version of my previous patch. This patch enables to potentially share the new interrupt management code for all Intel targets (pc386, go32 and force386) bsp. Note : this patch is complete only for pc386. It still needs to be completed for go32 and force386. I carrefully checked that anything needed is in for force386 (only some function name changes for IDT manipulation and GDT segment manipulation). But anyway I will not be able to test any of theses targets...
* 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-061-0/+14
|
* Fixed typo.Joel Sherrill1998-07-011-1/+1
|
* All task delete API level services were incorrectly assuming that theJoel Sherrill1998-06-182-2/+15
| | | | | | | | | | | task to be deleted was created via the same API (i.e. were of the object class created by this API). For example, a POSIX thread calling the rtems_task_delete(SELF) directive would incorrectly update the RTEMS object local pointer table. Jennifer discovered this when moving tests implemented in C using the Classic RTEMS API into a tree of Ada tests. The Ada tests were implicitly using POSIX services. This lead to some unexpected behavior.
* Modified _Objects_Is_class_valid() to correctly report that 0 wasJoel Sherrill1998-06-182-2/+2
| | | | | not a valid object class. This was discovered while looking for a bug reported by Jennifer.
* Added freebsd support from Dario Alcocer <alcocer@connectnet.com>.Joel Sherrill1998-06-182-2/+21
|
* 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 a public interface to the chain handler.Joel Sherrill1998-06-181-0/+362
|
* Added optimized version of memcpy.c to this directory since RTEMS makesJoel Sherrill1998-06-121-0/+87
| | | | | | important distinctions between CPU models which are not made by gcc. These distinctions help give us a more optimized memcpy(). This is important for message queues and KA9Q.
* Added CPU_ISR_PASSES_FRAME_POINTER so some ports could pass just theJoel Sherrill1998-06-031-0/+7
| | | | | vector number to user ISR's and other ports could pass both the vector number and a pointer to the ISF.
* Corrected macros for assembly language program sections.Joel Sherrill1998-06-032-4/+4
|
* Corrected interrupt stack allocation.Joel Sherrill1998-05-271-3/+7
|
* Added tcdrain(), cfgetospeed(0, cfsetospeed(), cfgetispeed(), andJoel Sherrill1998-05-222-0/+56
| | | | cfsetispeed().
* Added tcdrain(), cfgetospeed(), cfsetospeed(), cfgetispeed(), and cfsetispeed().Joel Sherrill1998-05-221-1/+5
|
* 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-191-0/+12
|
* Removed prototype of rtems_libio_config() per Chris Johns' eagle eye.Joel Sherrill1998-05-191-1/+0
|
* Include memory for Ada task stacks.Joel Sherrill1998-05-181-2/+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.
* Added default value for CONFIGURE_MAXIMUM_POSIX_THREADS since it isJoel Sherrill1998-05-041-0/+1
| | | | | used to calculate the amount of memory used by tasks whether the POSIX API is enabled or disabled.
* Removed redundant "* 1024" which exploded the size of the workspace.Joel Sherrill1998-04-301-2/+2
|
* Cosmetic fix from Eric Norum:Joel Sherrill1998-04-271-1/+1
| | | | | | This makes the headings line up above the columns a little better. Now that it's so easy to include/exclude the stack check code I find myself adding it to all my `debug' targets.
* Fixed CVS IdJoel Sherrill1998-04-271-1/+1
|
* Added numerous entries to make the memory calculation more accurate:Joel Sherrill1998-04-271-1/+67
| | | | | | | | | | | | | + POSIX threads + Ada tasks + POSIX threads API support + POSIX condition variables + POSIX keys (still do not account for data fields) + POSIX mutexes + POSIX queued signals + added macro for extra memory for task stacks + default value for CONFIGURE_MAXIMUM_FAKE_ADA_TASKS + extra memory for Ada task stacks
* Moved POSIX_signals_Siginfo_node structure definition to headers/psignal.hJoel Sherrill1998-04-271-5/+1
| | | | so confdefs.h could see it.
* Changed __POSIX_SIGNALS_h to __RTEMS_POSIX_SIGNALS_h to avoid conflict withJoel Sherrill1998-04-271-2/+7
| | | | | | | the system signals.h file. Moved POSIX_signals_Siginfo_node type definition to this file to allow confdefs.h to know the size per queued signal.
* rtems_libio_number_iops is now defined in confdefs.h so the maximumJoel Sherrill1998-04-181-1/+1
| | | | file descriptors is user configurable.
* Changed to account for libio's maximum_semaphores as well as itsJoel Sherrill1998-04-181-1/+5
| | | | | | memory requirements. Also added variable to tell libio how many file descriptors to allocate.
* Fixed so this would compile without warning.Joel Sherrill1998-04-151-0/+2
|
* Added bh, ch, dh, bl, cl, and dl register macros.Joel Sherrill1998-04-152-0/+14
|
* Numerous changes which in total greatly reduced the amount of sourceJoel Sherrill1998-04-152-19/+9
| | | | | | | | | | | | 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.