#ifndef DEVICES_LOAD_H
#define DEVICES_LOAD_H
#ifndef DEVICES_TIMER_H
#include <devices/timer.h>
#endif DEVICES_TIMER_H
#ifndef EXEC_DEVICES_H
#include <exec/devices.h>
#endif
#ifndef EXEC_SEMAPHORES_H
#include <exec/semaphores.h>
#endif
#define LOAD_STACK_SIZE 200
struct LoadBase {
    struct Device ld_device;
    struct SignalSemaphore ld_semaphore;
    struct timerequest ld_timerequest;
    struct MsgPort ld_timerport;
    struct MsgPort ld_port;
    struct Task ld_taskcb;
    char   ld_stack[LOAD_STACK_SIZE];
    ULONG  ld_seglist;
    ULONG  ld_sysbase;
    UWORD  ld_interval;
    UWORD  ld_ticks;
    ULONG  ld_secs;
    ULONG  ld_micro;
    ULONG  ld_max_chip;
    ULONG  ld_max_fast;
    ULONG  ld_cpu;
    ULONG  ld_blitter;
    ULONG  ld_chip;
    ULONG  ld_fast;
    UBYTE  ld_stop_count;
    UBYTE  ld_flags;
};
typedef struct _loadval {
    ULONG   lv_cpu;
    ULONG   lv_blitter;
    ULONG   lv_chip;
    ULONG   lv_fast;
} loadval;
typedef struct _loadrequest {
    struct IORequest lr_node;
    struct _loadval  lr_load;
    UWORD	     lr_interval;
    UWORD	     lr_ticks;
    BYTE	     lr_pri;
} loadrequest;
#define LDB_OPEN_EXCL	    0
#define LDF_OPEN_EXCL	    (1<<LDB_OPEN_EXCL)
#define LDERR_IN_USE	    -5
#define LDERR_ACCESS_DENIED -6
#define LDERR_NOT_STOPPED   -7
#define LD_SET	CMD_NONSTD

