#include <kern/kfile.h>
#if CONFIG_KERNEL
#include <kern/kfile.h>
#if CONFIG_KERNEL
+ #include <kern/proc.h>
+#else
+ #define proc_yield() do {} while(0)
#endif
#include <string.h>
#endif
#include <string.h>
* is high.
*/
while (!(dataflash_stat(fd) & BUSY_BIT))
* is high.
*/
while (!(dataflash_stat(fd) & BUSY_BIT))
- {
- #if CONFIG_KERNEL
- proc_switch();
- #endif
- }
stat = dataflash_stat(fd);
stat = dataflash_stat(fd);
#include <kern/kfile.h>
#if CONFIG_KERNEL
#include <kern/kfile.h>
#if CONFIG_KERNEL
+ #include <kern/proc.h>
+#else
+ #define proc_yield() do {} while(0)
#endif
#warning FIXME:This file was change, but is untest!
#endif
#warning FIXME:This file was change, but is untest!
if (!(stat & RDY_BIT))
break;
if (!(stat & RDY_BIT))
break;
- proc_switch();
- #endif
*
* Copyright 2003, 2004, 2006 Develer S.r.l. (http://www.develer.com/)
* Copyright 2000 Bernie Innocenti <bernie@codewiz.org>
*
* Copyright 2003, 2004, 2006 Develer S.r.l. (http://www.develer.com/)
* Copyright 2000 Bernie Innocenti <bernie@codewiz.org>
* -->
*
* \brief Buffered serial I/O driver
* -->
*
* \brief Buffered serial I/O driver
#error CONFIG_SER_DEFBAUDRATE missing in config.h
#endif
#error CONFIG_SER_DEFBAUDRATE missing in config.h
#endif
+#if CONFIG_KERNEL && CONFIG_KERN_SCHED
+#else
+ #define proc_yield() do {} while(0)
#endif
#if CONFIG_SER_TXTIMEOUT != -1 || CONFIG_SER_RXTIMEOUT != -1
#endif
#if CONFIG_SER_TXTIMEOUT != -1 || CONFIG_SER_RXTIMEOUT != -1
/* Wait while buffer is full... */
do
{
/* Wait while buffer is full... */
do
{
- wdt_reset();
-#if CONFIG_KERNEL && CONFIG_KERN_SCHED
/* Give up timeslice to other processes. */
/* Give up timeslice to other processes. */
+ proc_yield();
+ wdt_reset();
+
#if CONFIG_SER_TXTIMEOUT != -1
if (timer_clock() - start_time >= port->txtimeout)
{
#if CONFIG_SER_TXTIMEOUT != -1
if (timer_clock() - start_time >= port->txtimeout)
{
ticks_t start_time = timer_clock();
#endif
ticks_t start_time = timer_clock();
#endif
/* Wait while buffer is empty */
do
{
/* Wait while buffer is empty */
do
{
- wdt_reset();
-#if CONFIG_KERNEL && CONFIG_KERN_SCHED
/* Give up timeslice to other processes. */
/* Give up timeslice to other processes. */
+ proc_yield();
+ wdt_reset();
+
#if CONFIG_SER_RXTIMEOUT != -1
if (timer_clock() - start_time >= port->rxtimeout)
{
#if CONFIG_SER_RXTIMEOUT != -1
if (timer_clock() - start_time >= port->rxtimeout)
{
while (!fifo_isempty(&fds->txfifo)
|| fds->hw->table->txSending(fds->hw))
{
while (!fifo_isempty(&fds->txfifo)
|| fds->hw->table->txSending(fds->hw))
{
- #if CONFIG_KERNEL && CONFIG_KERN_SCHED
/* Give up timeslice to other processes. */
/* Give up timeslice to other processes. */
- proc_switch();
- #endif
/**
* Co-operative context switch
*/
/**
* Co-operative context switch
*/
{
ATOMIC(SCHED_ENQUEUE(CurrentProcess));
{
ATOMIC(SCHED_ENQUEUE(CurrentProcess));
#endif
void proc_exit(void);
#endif
void proc_exit(void);
+void proc_yield(void);
+#define proc_switch proc_yield /* OBSOLETE */
+
int proc_testSetup(void);
int proc_testRun(void);
int proc_testTearDown(void);
int proc_testSetup(void);
int proc_testRun(void);
int proc_testTearDown(void);
-/* OBSOLETE */
-#define CONFIG_KERN_DEFSTACKSIZE CONFIG_PROC_DEFSTACKSIZE
-
/* Memory fill codes to help debugging */
#if CONFIG_KERN_MONITOR
#include <cpu/types.h>
/* Memory fill codes to help debugging */
#if CONFIG_KERN_MONITOR
#include <cpu/types.h>
{
kputs("> test1\n");
timer_delay(50);
{
kputs("> test1\n");
timer_delay(50);
{
kputs("> test2\n");
timer_delay(75);
{
kputs("> test2\n");
timer_delay(75);
{
kputs("> main\n");
timer_delay(93);
{
kputs("> main\n");
timer_delay(93);