Changeset cefb126 in mainline for kernel/generic/include


Ignore:
Timestamp:
2010-07-02T14:19:30Z (15 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
89c57b6
Parents:
fe7abd0 (diff), e3ee9b9 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes.

Location:
kernel/generic/include
Files:
1 deleted
16 edited
2 moved

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/atomic.h

    rfe7abd0 rcefb126  
    3838#include <typedefs.h>
    3939#include <arch/atomic.h>
     40#include <verify.h>
    4041
    41 static inline void atomic_set(atomic_t *val, atomic_count_t i)
     42ATOMIC static inline void atomic_set(atomic_t *val, atomic_count_t i)
     43    WRITES(&val->count)
     44    REQUIRES_EXTENT_MUTABLE(val)
    4245{
    4346        val->count = i;
    4447}
    4548
    46 static inline atomic_count_t atomic_get(atomic_t *val)
     49ATOMIC static inline atomic_count_t atomic_get(atomic_t *val)
     50    REQUIRES_EXTENT_MUTABLE(val)
    4751{
    4852        return val->count;
  • kernel/generic/include/config.h

    rfe7abd0 rcefb126  
    7070       
    7171        uintptr_t base;
    72         size_t kernel_size;           /**< Size of memory in bytes taken by kernel and stack */
     72        size_t kernel_size;          /**< Size of memory in bytes taken by kernel and stack */
    7373       
    74         uintptr_t stack_base;         /**< Base adddress of initial stack */
    75         size_t stack_size;            /**< Size of initial stack */
     74        uintptr_t stack_base;        /**< Base adddress of initial stack */
     75        size_t stack_size;           /**< Size of initial stack */
    7676} config_t;
    7777
  • kernel/generic/include/console/console.h

    rfe7abd0 rcefb126  
    5656extern outdev_t *stdout;
    5757
     58extern void early_putchar(wchar_t);
     59
    5860extern indev_t *stdin_wire(void);
    5961extern void stdout_wire(outdev_t *outdev);
  • kernel/generic/include/context.h

    rfe7abd0 rcefb126  
    8787 *
    8888 * @param ctx Context structure.
     89 *
    8990 */
    90 static inline void context_restore(context_t *ctx)
     91static inline void __attribute__((no_instrument_function))
     92    context_restore(context_t *ctx)
    9193{
    9294        context_restore_arch(ctx);
  • kernel/generic/include/cpu.h

    rfe7abd0 rcefb126  
    7272        size_t missed_clock_ticks;
    7373       
     74        /**
     75         * Processor cycle accounting.
     76         */
    7477        bool idle;
    75         uint64_t idle_ticks;
    76         uint64_t busy_ticks;
     78        uint64_t last_cycle;
     79        uint64_t idle_cycles;
     80        uint64_t busy_cycles;
    7781       
    7882        /**
  • kernel/generic/include/debug.h

    rfe7abd0 rcefb126  
    5555        do { \
    5656                if (!(expr)) \
    57                         panic("Assertion failed (%s)", #expr); \
     57                        panic_assert("%s", #expr); \
    5858        } while (0)
    5959
     
    7272        do { \
    7373                if (!(expr)) \
    74                         panic("Assertion failed (%s, %s)", #expr, msg); \
     74                        panic_assert("%s, %s", #expr, msg); \
    7575        } while (0)
    7676
     
    9393#define LOG(format, ...) \
    9494        do { \
    95                 printf("%s->%s() at %s:%u: " format "\n", symtab_fmt_name_lookup(CALLER), \
    96                     __func__, __FILE__, __LINE__, ##__VA_ARGS__); \
    97         } while (0)
    98 
    99 /** Extensive logging execute macro
    100  *
    101  * If CONFIG_LOG is set, the LOG_EXEC() macro
    102  * will print an information about calling a given
    103  * function and call it.
    104  *
    105  */
    106 #define LOG_EXEC(fnc) \
    107         do { \
    108                 printf("%s->%s() at %s:%u: " #fnc "\n", symtab_fmt_name_lookup(CALLER), \
    109                     __func__, __FILE__, __LINE__); \
    110                 fnc; \
     95                printf("%s() from %s at %s:%u: " format "\n", __func__, \
     96                    symtab_fmt_name_lookup(CALLER), __FILE__, __LINE__, \
     97                    ##__VA_ARGS__); \
    11198        } while (0)
    11299
     
    114101
    115102#define LOG(format, ...)
    116 #define LOG_EXEC(fnc)     fnc
    117103
    118 #endif /* CONFOG_LOG */
     104#endif /* CONFIG_LOG */
     105
     106#ifdef CONFIG_TRACE
     107
     108extern void __cyg_profile_func_enter(void *, void *);
     109extern void __cyg_profile_func_exit(void *, void *);
     110
     111#endif /* CONFIG_TRACE */
    119112
    120113#endif
  • kernel/generic/include/interrupt.h

    rfe7abd0 rcefb126  
    6464extern void irq_initialize_arch(irq_t *);
    6565
     66extern void istate_decode(istate_t *);
     67
    6668#endif
    6769
  • kernel/generic/include/macros.h

    rfe7abd0 rcefb126  
    4747 * @param sz2 Size of the second interval.
    4848 */
    49 static inline int overlaps(uintptr_t s1, size_t sz1, uintptr_t s2, size_t sz2)
     49static inline int __attribute__((no_instrument_function))
     50    overlaps(uintptr_t s1, size_t sz1, uintptr_t s2, size_t sz2)
    5051{
    5152        uintptr_t e1 = s1 + sz1;
  • kernel/generic/include/mm/tlb.h

    rfe7abd0 rcefb126  
    6868
    6969#ifdef CONFIG_SMP
    70 extern void tlb_shootdown_start(tlb_invalidate_type_t type, asid_t asid,
    71     uintptr_t page, size_t count);
    72 extern void tlb_shootdown_finalize(void);
     70extern ipl_t tlb_shootdown_start(tlb_invalidate_type_t, asid_t, uintptr_t,
     71    size_t);
     72extern void tlb_shootdown_finalize(ipl_t);
    7373extern void tlb_shootdown_ipi_recv(void);
    7474#else
    75 #define tlb_shootdown_start(w, x, y, z)
    76 #define tlb_shootdown_finalize()
     75#define tlb_shootdown_start(w, x, y, z) (0)
     76#define tlb_shootdown_finalize(i)       ((i) = (i));
    7777#define tlb_shootdown_ipi_recv()
    7878#endif /* CONFIG_SMP */
     
    8484
    8585extern void tlb_invalidate_all(void);
    86 extern void tlb_invalidate_asid(asid_t asid);
    87 extern void tlb_invalidate_pages(asid_t asid, uintptr_t page, size_t cnt);
     86extern void tlb_invalidate_asid(asid_t);
     87extern void tlb_invalidate_pages(asid_t, uintptr_t, size_t);
    8888#endif
    8989
  • kernel/generic/include/panic.h

    rfe7abd0 rcefb126  
    11/*
    2  * Copyright (c) 2001-2004 Jakub Jermar
     2 * Copyright (c) 2010 Jakub Jermar
    33 * All rights reserved.
    44 *
     
    3737
    3838#include <typedefs.h>
    39 #include <stacktrace.h>
    40 #include <print.h>
    4139
    42 #ifdef CONFIG_DEBUG
     40#define panic(fmt, ...) \
     41        panic_common(PANIC_OTHER, NULL, 0, 0, fmt, ##__VA_ARGS__)
    4342
    44 #define panic(format, ...) \
    45         do { \
    46                 silent = false; \
    47                 printf("Kernel panic in %s() at %s:%u\n", \
    48                     __func__, __FILE__, __LINE__); \
    49                 stack_trace(); \
    50                 panic_printf("Panic message: " format "\n", \
    51                     ##__VA_ARGS__);\
    52         } while (0)
     43#define panic_assert(fmt, ...) \
     44        panic_common(PANIC_ASSERT, NULL, 0, 0, fmt, ##__VA_ARGS__)
    5345
    54 #else /* CONFIG_DEBUG */
     46#define panic_badtrap(istate, n, fmt, ...) \
     47        panic_common(PANIC_BADTRAP, istate, 0, n, fmt, ##__VA_ARGS__)
    5548
    56 #define panic(format, ...) \
    57         do { \
    58                 silent = false; \
    59                 panic_printf("Kernel panic: " format "\n", ##__VA_ARGS__); \
    60                 stack_trace(); \
    61         } while (0)
     49#define panic_memtrap(istate, access, addr, fmt, ...) \
     50        panic_common(PANIC_MEMTRAP, istate, access, addr, fmt, ##__VA_ARGS__)
    6251
    63 #endif /* CONFIG_DEBUG */
     52typedef enum {
     53        PANIC_OTHER,
     54        PANIC_ASSERT,
     55        PANIC_BADTRAP,
     56        PANIC_MEMTRAP
     57} panic_category_t;
     58
     59struct istate;
    6460
    6561extern bool silent;
    6662
    67 extern void panic_printf(const char *fmt, ...) __attribute__((noreturn));
     63extern void panic_common(panic_category_t, struct istate *, int,
     64    uintptr_t, const char *, ...) __attribute__ ((noreturn));
    6865
    6966#endif
  • kernel/generic/include/proc/task.h

    rfe7abd0 rcefb126  
    4040#include <synch/spinlock.h>
    4141#include <synch/mutex.h>
    42 #include <synch/rwlock.h>
    4342#include <synch/futex.h>
    4443#include <adt/avl.h>
  • kernel/generic/include/proc/thread.h

    rfe7abd0 rcefb126  
    4040#include <time/timeout.h>
    4141#include <cpu.h>
    42 #include <synch/rwlock.h>
    4342#include <synch/spinlock.h>
    4443#include <adt/avl.h>
     
    155154        int fpu_context_engaged;
    156155       
    157         rwlock_type_t rwlock_holder_type;
    158        
    159         /** Callback fired in scheduler before the thread is put asleep. */
    160         void (* call_me)(void *);
    161         /** Argument passed to call_me(). */
    162         void *call_me_with;
    163        
    164156        /** Thread's state. */
    165157        state_t state;
     
    239231extern void thread_detach(thread_t *);
    240232
    241 extern void thread_register_call_me(void (*)(void *), void *);
    242233extern void thread_print_list(bool);
    243234extern void thread_destroy(thread_t *, bool);
  • kernel/generic/include/smp/ipi.h

    rfe7abd0 rcefb126  
    4343#else
    4444
    45         #define ipi_broadcast(ipi)
     45#define ipi_broadcast(ipi)
    4646
    4747#endif /* CONFIG_SMP */
  • kernel/generic/include/sort.h

    rfe7abd0 rcefb126  
    3838#include <typedefs.h>
    3939
    40 /*
    41  * sorting routines
    42  */
    43 extern void bubblesort(void * data, size_t n, size_t e_size, int (* cmp) (void * a, void * b));
    44 extern void qsort(void * data, size_t n, size_t e_size, int (* cmp) (void * a, void * b));
     40typedef int (* sort_cmp_t)(void *, void *, void *);
    4541
    46 /*
    47  * default sorting comparators
    48  */
    49 extern int int_cmp(void * a, void * b);
    50 extern int uint32_t_cmp(void * a, void * b);
    51 extern int uint16_t_cmp(void * a, void * b);
    52 extern int uint8_t_cmp(void * a, void * b);
     42extern bool gsort(void *, size_t, size_t, sort_cmp_t, void *);
     43extern bool qsort(void *, size_t, size_t, sort_cmp_t, void *);
    5344
    5445#endif
  • kernel/generic/include/stdint.h

    rfe7abd0 rcefb126  
    2727 */
    2828
    29 /** @addtogroup libcmips32
     29/** @addtogroup generic
    3030 * @{
    3131 */
    3232/** @file
    33  * @ingroup libcmips32eb
    3433 */
    3534
    36 #ifndef LIBC_mips32__LIMITS_H_
    37 #define LIBC_mips32__LIMITS_H_
     35#ifndef KERN_STDINT_H_
     36#define KERN_STDINT_H_
    3837
    39 #define LONG_MIN MIN_INT32
    40 #define LONG_MAX MAX_INT32
    41 #define ULONG_MIN MIN_UINT32
    42 #define ULONG_MAX MAX_UINT32
     38#define INT8_MIN  (0x80)
     39#define INT8_MAX  (0x7F)
    4340
    44 #define SIZE_MIN MIN_UINT32
    45 #define SIZE_MAX MAX_UINT32
    46 #define SSIZE_MIN MIN_INT32
    47 #define SSIZE_MAX MAX_INT32
     41#define UINT8_MIN  (0u)
     42#define UINT8_MAX  (0xFFu)
     43
     44#define INT16_MIN  (0x8000)
     45#define INT16_MAX  (0x7FFF)
     46
     47#define UINT16_MIN  (0u)
     48#define UINT16_MAX  (0xFFFFu)
     49
     50#define INT32_MIN  (0x80000000l)
     51#define INT32_MAX  (0x7FFFFFFFl)
     52
     53#define UINT32_MIN  (0ul)
     54#define UINT32_MAX  (0xFFFFFFFFul)
     55
     56#define INT64_MIN  (0x8000000000000000ll)
     57#define INT64_MAX  (0x7FFFFFFFFFFFFFFFll)
     58
     59#define UINT64_MIN  (0ull)
     60#define UINT64_MAX  (0xFFFFFFFFFFFFFFFFull)
    4861
    4962#endif
  • kernel/generic/include/sysinfo/abi.h

    rfe7abd0 rcefb126  
    6969        bool active;             /**< CPU is activate */
    7070        uint16_t frequency_mhz;  /**< Frequency in MHz */
    71         uint64_t idle_ticks;     /**< Number of idle kernel quanta */
    72         uint64_t busy_ticks;     /**< Number of busy kernel quanta */
     71        uint64_t idle_cycles;    /**< Number of idle cycles */
     72        uint64_t busy_cycles;    /**< Number of busy cycles */
    7373} stats_cpu_t;
    7474
  • kernel/generic/include/typedefs.h

    rfe7abd0 rcefb126  
    3636#define KERN_TYPEDEFS_H_
    3737
     38#include <stdint.h>
    3839#include <arch/common.h>
    3940#include <arch/types.h>
  • kernel/generic/include/verify.h

    rfe7abd0 rcefb126  
    2727 */
    2828
    29 /** @addtogroup libcabs32le
     29/** @addtogroup genericverify
    3030 * @{
    3131 */
     
    3333 */
    3434
    35 #ifndef LIBC_abs32le__LIMITS_H_
    36 #define LIBC_abs32le__LIMITS_H_
     35#ifndef KERN_VERIFY_H_
     36#define KERN_VERIFY_H_
    3737
    38 #define LONG_MIN MIN_INT32
    39 #define LONG_MAX MAX_INT32
    40 #define ULONG_MIN MIN_UINT32
    41 #define ULONG_MAX MAX_UINT32
    4238
    43 #define SIZE_MIN MIN_UINT32
    44 #define SIZE_MAX MAX_UINT32
    45 #define SSIZE_MIN MIN_INT32
    46 #define SSIZE_MAX MAX_INT32
     39#ifdef CONFIG_VERIFY_VCC
     40
     41#define ATOMIC         __specification_attr("atomic_inline", "")
     42
     43#define READS(ptr)     __specification(reads(ptr))
     44#define WRITES(ptr)    __specification(writes(ptr))
     45#define REQUIRES(...)  __specification(requires __VA_ARGS__)
     46
     47#define EXTENT(ptr)              \extent(ptr)
     48#define ARRAY_RANGE(ptr, nmemb)  \array_range(ptr, nmemb)
     49
     50#define REQUIRES_EXTENT_MUTABLE(ptr) \
     51        REQUIRES(\extent_mutable(ptr))
     52
     53#define REQUIRES_ARRAY_MUTABLE(ptr, nmemb) \
     54        REQUIRES(\mutable_array(ptr, nmemb))
     55
     56#else /* CONFIG_VERIFY_VCC */
     57
     58#define ATOMIC
     59
     60#define READS(ptr)
     61#define WRITES(ptr)
     62#define REQUIRES(...)
     63
     64#define EXTENT(ptr)
     65#define ARRAY_RANGE(ptr, nmemb)
     66
     67#define REQUIRES_EXTENT_MUTABLE(ptr)
     68#define REQUIRES_ARRAY_MUTABLE(ptr, nmemb)
     69
     70#endif /* CONFIG_VERIFY_VCC */
     71
    4772
    4873#endif
Note: See TracChangeset for help on using the changeset viewer.