On 2019-01-09 17:50, Matthew Wilcox wrote:
On Wed, Jan 09, 2019 at 05:40:13PM +0100, Roman Penyaev wrote:
Basically vrealloc() repeats glibc realloc() with only one big
difference:
old area is not freed, i.e. caller is responsible for calling vfree()
in
case of successfull reallocation.
Ouch. Don't call it the same thing when you're providing such
different
semantics. I agree with you that the new semantics are useful ones,
I just want it called something else. Maybe vcopy()? vclone()?
vclone(). I like vclone(). But Linus does not like this reallocation
under the hood for epoll (where this vrealloc() should have been used),
so seems that won't be needed at all.
+ * Do not forget to call vfree() passing old address. But careful,
+ * calling vfree() from interrupt will cause vfree_deferred() call,
+ * which in its turn uses freed address as a temporal pointer for a
"temporary", not temporal.
Ha! Now I got the difference. Thanks, Mathew :)
+ * llist element, i.e. memory will be corrupted.
--
Roman