exe$alononpage and exe$deanopgdsiz



Hi,

Please help with the following questions and supply any other useful advice
you can when it comes to calling these services.

* Manuals referenced:- VMS Source code + "OpenVMS VAX Device Support
[Reference] Manual".

1) exe$deanonpgdsiz says it will get the length from R1 *only* if the memory
was allocated from Variable Pool. Exe$alonnonpaged says it will allocate
from Variable Region *or* Lookaside List depending on the size of the
request. ("The" size it neglects to mention.) The Alononpaged_inline macro
went to some lengths to examine the size parameter and then call either
exe$alononpage or exe$alonpagvar. The doc says the entry for exe$alnonpagvar
no longer exists and just to jump to exe$alononpaged instead. If
exe$deanonpgdsiz desides that the size of the deallocation is such that it
will log for implicit inputs at irp$w_size and irp$b_type and I haven't
adhered to those packet formatting conventions then it won't be happy and
you don't want to see exe$deanonpgdsiz unhappy. None of the code and
examples I've seen explicitly cater for this. Do I have to worry or can I
force it some how to only ever look to R1 for the size of the block to
deallocate? Does the memory layout have to follow a convention?

2) A lot of the past code in COV wants to raise IPL to ipl$_astdel before
calling exe$alononpaged. I don't think this is necessary is it? The
subroutine itself executes at caller's IPL and raises IPL to ipl$_pool (and
the deallocation also aquires the SYNCH lock and raises it to ipl$_synch)
but the only restriction I've seen is that you can't be above ipl$_pool when
jumping to these routines. Is that correct? Does working set have to be
locked in memory?

3) As these routines raise IPL, I assume that you have to be in Kernel mode
and Exec won't cut it. Is that correct?

4) What protection is on the memory that you get back from non-paged pool?

5) You're not expected to do your own accounting with thwse are you? What
quotas and sysgen parameters are in play?

Anything else?

Regards Richard Maher


.



Relevant Pages

  • Re: Memory Cleanup
    ... Calling GC.Collect is not the ... // The total memory has not gone down. ... reference counters, and nothing happens when objects go out of scope. ... objects just remain in memory waiting for the garbage collector to remove ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Calling waveOut functions from Visual C++ 2005?
    ... you do have to be very careful with who is calling which of those functions. ... waveOutPrepareHeader ... The problem is that when the wave file ... I am allocating memory for the wave samples using the C native malloc ...
    (microsoft.public.win32.programmer.mmedia)
  • Re: DataSet wont release memory?
    ... > Calling CG.Collect is ill advised in most situations, ... > that much memory, it seems like that isn't being referenced anymore. ... ds is a local object, and none of it's memory is being ... Yes, it's very fishy... ...
    (microsoft.public.dotnet.framework.adonet)
  • Re: Low memory errors with sp_xml_preparedocument
    ... not calling the sp_xml_removedocument since there are no ... active in SQLXML and what it is doing with the memory? ... >> shred XML documents which are initially held in a text ... >> The process will then fail every time it is called. ...
    (microsoft.public.sqlserver.xml)
  • Re: DataSet wont release memory?
    ... >> Calling CG.Collect is ill advised in most situations, ... >> that much memory, it seems like that isn't being referenced anymore. ... Only once per query... ... you'd be killing your ram in most circumstances. ...
    (microsoft.public.dotnet.framework.adonet)