Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset ec8b0dac in mainline


Ignore:
Timestamp:
2009-07-11T15:14:56Z (12 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master
Children:
4b2c458c
Parents:
4c467ee
Message:

Things are much easier when the compiler knows that context_save() returns twice.

Files:
3 edited

Legend:

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

    r4c467ee rec8b0dac  
    4646#endif /* context_set */
    4747
    48 extern int context_save_arch(context_t *c);
     48extern int context_save_arch(context_t *c) __attribute__ ((returns_twice));
    4949extern void context_restore_arch(context_t *c) __attribute__ ((noreturn));
    5050
  • uspace/lib/libc/generic/fibril.c

    r4c467ee rec8b0dac  
    166166                /* Save current state */
    167167                if (!context_save(&srcf->ctx)) {
    168                         /*
    169                          * Make sure to reload srcf with the current fibril
    170                          * address. Its value may be invalid after
    171                          * contex_restore() due to e.g. register recycling.
    172                          */
    173                         srcf = __tcb_get()->fibril_data;
    174168                        if (serialization_count)
    175169                                srcf->flags &= ~FIBRIL_SERIALIZED;
  • uspace/lib/libc/include/fibril.h

    r4c467ee rec8b0dac  
    7676#define fibril_local __thread
    7777
    78 extern int context_save(context_t *c);
     78extern int context_save(context_t *c) __attribute__ ((returns_twice));
    7979extern void context_restore(context_t *c) __attribute__ ((noreturn));
    8080
Note: See TracChangeset for help on using the changeset viewer.