Changeset 1372502 in rtems-libbsd


Ignore:
Timestamp:
Jul 26, 2018, 12:49:35 PM (11 months ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
eeb3fd5d9b07ac9a2e280cff60a1b762bd273a8d, 1e989998de954bef51e6c19cc3d64d39f32100aa
Children:
9efc650
Parents:
e37f03e
Message:

Make sure CALLOUT_DFRMIGRATION is not used

This flag supports the callout migration in FreeBSD. This feature is
not supported by libbsd.

Location:
freebsd/sys
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • freebsd/sys/kern/kern_timeout.c

    re37f03e r1372502  
    185185};
    186186
     187#ifndef __rtems__
    187188#define callout_migrating(c)    ((c)->c_iflags & CALLOUT_DFRMIGRATION)
     189#endif /* __rtems__ */
    188190
    189191#ifndef __rtems__
     
    269271}
    270272
     273#ifndef __rtems__
    271274/*
    272275 * Checks if migration is requested by a specific callout cpu.
     
    282285#endif
    283286}
     287#endif /* __rtems__ */
    284288
    285289/*
     
    860864        }
    861865        if (cc_exec_waiting(cc, direct)) {
     866#ifndef __rtems__
    862867                /*
    863868                 * There is someone waiting for the
     
    875880                        c->c_iflags &= ~CALLOUT_DFRMIGRATION;
    876881                }
     882#endif /* __rtems__ */
    877883                cc_exec_waiting(cc, direct) = false;
    878884                CC_UNLOCK(cc);
    879885                wakeup(&cc_exec_waiting(cc, direct));
    880886                CC_LOCK(cc);
     887#ifndef __rtems__
    881888        } else if (cc_cce_migrating(cc, direct)) {
    882889                KASSERT((c_iflags & CALLOUT_LOCAL_ALLOC) == 0,
     
    918925                panic("migration should not happen");
    919926#endif
     927#endif /* __rtems__ */
    920928        }
    921929        /*
     
    12871295_callout_stop_safe(struct callout *c, int flags, void (*drain)(void *))
    12881296{
     1297#ifndef __rtems__
    12891298        struct callout_cpu *cc, *old_cc;
    12901299        struct lock_class *class;
    1291 #ifndef __rtems__
    12921300        int direct, sq_locked, use_lock;
     1301        int cancelled, not_on_a_list;
    12931302#else /* __rtems__ */
    1294         int sq_locked, use_lock;
    1295 #endif /* __rtems__ */
    1296         int cancelled, not_on_a_list;
    1297 #ifdef __rtems__
    1298         (void)old_cc;
    1299         (void)sq_locked;
     1303        struct callout_cpu *cc;
     1304        struct lock_class *class;
     1305        int use_lock;
     1306        int cancelled;
    13001307#endif /* __rtems__ */
    13011308
     
    13311338        cc = callout_lock(c);
    13321339
     1340#ifndef __rtems__
    13331341        if ((c->c_iflags & (CALLOUT_DFRMIGRATION | CALLOUT_PENDING)) ==
    13341342            (CALLOUT_DFRMIGRATION | CALLOUT_PENDING) &&
     
    13531361        }
    13541362
    1355 #ifndef __rtems__
    13561363        /*
    13571364         * If the callout was migrating while the callout cpu lock was
     
    14711478                        CTR3(KTR_CALLOUT, "cancelled %p func %p arg %p",
    14721479                            c, c->c_func, c->c_arg);
     1480#ifndef __rtems__
    14731481                        KASSERT(!cc_cce_migrating(cc, direct),
    14741482                            ("callout wrongly scheduled for migration"));
     
    14831491#endif
    14841492                        }
     1493#endif /* __rtems__ */
    14851494                        CC_UNLOCK(cc);
    14861495#ifndef __rtems__
     
    14881497#endif /* __rtems__ */
    14891498                        return (1);
     1499#ifndef __rtems__
    14901500                } else if (callout_migrating(c)) {
    14911501                        /*
     
    15191529                        CC_UNLOCK(cc);
    15201530                        return ((flags & CS_EXECUTING) != 0);
     1531#endif /* __rtems__ */
    15211532                }
    15221533                CTR3(KTR_CALLOUT, "failed to stop %p func %p arg %p",
     
    15551566        CTR3(KTR_CALLOUT, "cancelled %p func %p arg %p",
    15561567            c, c->c_func, c->c_arg);
     1568#ifndef __rtems__
    15571569        if (not_on_a_list == 0) {
    1558 #ifndef __rtems__
    15591570                if ((c->c_iflags & CALLOUT_PROCESSED) == 0) {
    15601571#endif /* __rtems__ */
     
    15661577                        TAILQ_REMOVE(&cc->cc_expireq, c, c_links.tqe);
    15671578                }
    1568 #endif /* __rtems__ */
    1569         }
     1579        }
     1580#endif /* __rtems__ */
    15701581        callout_cc_del(c, cc);
    15711582        CC_UNLOCK(cc);
  • freebsd/sys/sys/callout.h

    re37f03e r1372502  
    4747#define CALLOUT_RETURNUNLOCKED  0x0010 /* handler returns with mtx unlocked */
    4848#define CALLOUT_SHAREDLOCK      0x0020 /* callout lock held in shared mode */
     49#ifndef __rtems__
    4950#define CALLOUT_DFRMIGRATION    0x0040 /* callout in deferred migration mode */
    50 #ifndef __rtems__
    5151#define CALLOUT_PROCESSED       0x0080 /* callout in wheel or processing list? */
    5252#define CALLOUT_DIRECT          0x0100 /* allow exec from hw int context */
Note: See TracChangeset for help on using the changeset viewer.