summaryrefslogtreecommitdiffstats
path: root/sys/dev/hwpmc
diff options
context:
space:
mode:
authorrrs <rrs@FreeBSD.org>2015-02-15 13:24:32 +0000
committerrrs <rrs@FreeBSD.org>2015-02-15 13:24:32 +0000
commita7664682b11a7ffb5e7daf71954e7b656e16c4ac (patch)
tree7ad9c96aab347c2281a8bba6ada7c43d66b3d09b /sys/dev/hwpmc
parenta131bc6ccdd1f9d3b2eb1a0eba12db36da29b906 (diff)
downloadFreeBSD-src-a7664682b11a7ffb5e7daf71954e7b656e16c4ac.zip
FreeBSD-src-a7664682b11a7ffb5e7daf71954e7b656e16c4ac.tar.gz
MFC of r278469, r278623
278469: This fixes two conditions that can incur when migration is being done in the callout code and harmonizes the macro use.: 1) The callout_active() will lie. Basically if a migration is occuring and the callout is about to expire and the migration has been deferred, the callout_active will no longer return true until after the migration. This confuses and breaks callers that are doing callout_init(&c, 1); such as TCP. 2) The migration code had a bug in it where when migrating, if a two calls to callout_reset came in and they both collided with the callout on the wheel about to run, then the second call to callout_reset would corrupt the list the callout wheel uses putting the callout thread into a endless loop. 3) Per imp, I have fixed all the macro occurance in the code that were for the most part being ignored. 278623: This fixes a bug I in-advertantly inserted when I updated the callout code in my last commit. The cc_exec_next is used to track the next when a direct call is being made from callout. It is *never* used in the in-direct method. When macro-izing I made it so that it would separate out direct/vs/non-direct. This is incorrect and can cause panics as Peter Holm has found for me (Thanks so much Peter for all your help in this). What this change does is restore that behavior but also get rid of the cc_next from the array and instead make it be part of the base callout structure. This way no one else will get confused since we will never use it for non-direct. Sponsored by: Netflix Inc.
Diffstat (limited to 'sys/dev/hwpmc')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud