[ros-dev] Re: [ros-diffs] 29826 ...
tamlin at algonet.se
tamlin at algonet.se
Thu Oct 25 20:09:31 CEST 2007
Alex Ionescu wrote:
> 1) Why implement new, complex features in the kernel instead of
> fixing current bugs?
You pay, you get a saying in what I work on. I pay, I decide.
> I had already written all these functions, but deleted them,
Wasn't that a bonehead thing to do?
> because nobody needed them,
... at the time.
> and the Mm part was too complex to do.
Guess what; I'm currently trying to actually implement it for Mm.
Ps was a first step in that direction.
Yes, Mm is complex, and yes I don't understand it enough yet - not
by a longshot. But checking in incremental improvements, so that
the code doesn't get lost, and disabled by default to not affect
the behaviour of trunk - that's a good thing. It means people can
both review and test the incremental changes, and perhaps even
suggest improvements - like you did in pt. 5 below.
> 2) Why are you bothering with PspPoolQuotaIndexFromPoolType?
Ignorance of:
> In case you haven't noticed, there's something called pool masks
PAGED_POOL_MASK. Got it.
> 5) Instead of duplicating code, perhaps consider calling a main
> worker function such as PspChargeQuota?
A sound refactoring suggestion.
> 6) Consider using an enum instead of magic numbers inside the
> quota entries, I believe it's called PS_QUOTA_TYPE.
I just followed the lead of existing code. Had there been any mention
of an enumeration for nonpaged, paged and pagefile, I would obviously
have used those names.
On a sidenote, the only public reference to PS_QUOTA_TYPE I could find
were from a PDB file transcript from ntdll, posted at a french site.
> 7) The quota routines require interlocks
Yep. Even requires a lock for checking and updating QuotaPeak.
> 8) They also require a global spinlock in the "give back" case.
I don't follow. Why? I'd imagine the "give back" case to be simpler
than the charge case, as the former only needs to decrement the usage
(InterlockedExchangeAdd with a negative value), while the latter needs
to increment, followed by comparing with and possibly update Peak.
> 9) Committing code that won't even build, even with the define on,
> isn't very appropriate.
I agree.
> If someone wants to actually test this, they won't be able to build
it
That's an interesting statement. Care to elaborate on how you reached
such a factually wrong conclusion?
> because of things like "refuse"
Some people prefer pseudo-code over nothing at all. Some prefer void.
Some people are able to spot C comment blocks. Some are not.
Me, I checked that in with both the approval and a statement of
preference for this kind of committs by the project coordinator.
It not only compiles, it partially works too.
> SVN should contain code that builds at any time. It's
> not hard to write /* TODO */..
You really need (new?) glasses. You even quoted it yourself!
"/* TODO: Check with Process->QuotaBlock if this can be satisfied, */"
--
Mike
More information about the Ros-dev
mailing list