Deep Dive into Contiguous Memory Allocator

Michał ‘mina86’ Nazarewicz | 10 czerwca 2012

This is the first part of an extended version of an LWN article on CMA. It contains much more detail on how to use CMA, and a lot of boring code samples. Should you be more interested in an overview, consider reading the original instead.

Contiguous Memory Allocator (or CMA) has been developed to allow big physically contiguous memory allocations. By initialising early at boot time and with some fairly intrusive changes to Linux memory management, it is able to allocate big memory chunks without a need to grab memory for exclusive use.

Simple in principle, it grew to be a quite complicated system which requires coöperation between boot-time allocator, buddy system, DMA subsystem, and some architecture-specific code. Still, all that complexity is usually hidden away and normal users won’t be exposed to it. Depending on perspective, CMA appears slightly different and there are different things to be done and look for.

Null: The never-ending story

Michał ‘mina86’ Nazarewicz | 27 marca 2011

I have already mentioned some problems with the null pointer but my recent discovery knocked my socks off.

By now, it should come with no surprise to anyone that 0 in pointer context acts as a null pointer (no matter of its actual representation). Moreover, it takes only a tiny bit of experimenting to figure out that expressions like (int)0 do as well. The latter is in itself a bit of a pita but it is conforming to the C++ standard which says:


Michał ‘mina86’ Nazarewicz | 25 grudnia 2010

I’ve just finished Braid. Not an impressive achievement, I admit, but just as I finished the last world (or should I say the first) I immediatelly felt the need to spread the word about this wonderful game. (I do need to apologise at this point for yet another non-technical entry on my blog.)

I probably wouldn’t get myself to writing anything about the game if I hadn’t seen Video Games are Art talk by Kellee Santiego of That Game Company, who, as it turns out, mentions Braid. (Not that I consider the speech to be particularly interesting or well presented — on the contrary, in my opinion it is unstructured with rather poor arguments — but it somehow stuck in my memory.)

Prime numbers less than 100

Michał ‘mina86’ Nazarewicz | 12 grudnia 2010

Anyone working in a big corporation must have been hit by some “funny” mail from a coworker that helps everyone gets through the day. No different at my office — at one point all engineers have been challenged to write the shortest code in C that prints all prime numbers (and only prime numbers) less than a hundred each on separate line.

This is an interesting brain-teaser so posting it here so others may choose to think about it while their code’s compiling.

Of course, a “C program” needs not to be taken too seriously — depending on not too far fetched undefined behaviours of given implementation is all right (but please do not use system or exec family of calls ;) ).

0 is ambiguous

Michał ‘mina86’ Nazarewicz | 24 października 2010

It has been a long time since my last entry, so inspired by Adriaan de Groot’s entry, I decided to write something about 0, NULL and upcoming nullptr.

I will try to be informative and explain what the whole buzz is about and then give my opinion about nullptr. Let us first inspect how a null pointer can be donated in C and C++.

New C features proposal

Michał ‘mina86’ Nazarewicz | 18 kwietnia 2010

As the committee gathered to discuss how the new C standard will look like I did some thinking of my own. I thought about features that I would love to see in C. I even collected thoughts of my twisted mind and condensed them into a text file.

What is outrageous is that since I believe information and ideas want to be free and shared I have decided to post my concepts on the net instead of imprisoning them in my wicked brain.

Maybe someone will find it useful somehow. Maybe even some committee member will read those and bring them out on the next meeting.

Dni Wolnego Oprogramowania

Michał ‘mina86’ Nazarewicz | 25 lutego 2010

UPDATE: Od jakiegoś czasu, dostępne jest nagranie z prelekcji. Nagrania z innych wykładów wraz z dodatkowymi materiałami dostępne są w archiwum Dni.

UPDATE: Dni ciągle jeszcze trwają, acz moja prelekcja już się odbyła, w związku z czym umieszczam nowszą, a tym samym poprawioną wersję prezentacji wraz z pełnymi kodami źródłowymi.

Niektóry wiedzą, inni właśnie się dowiedzą, iż w przyszły piątek (5 marca) ruszają III Dni Wolnego Oprogramowania w Bielsku-Białej. Będę miał przyjemność nie tylko bycia na tej imprezie, ale również aktywnego uczestnictwa. Dla wszelkich osób zainteresowanych udostępniam wersję alfa prezentacji, którą będę przedstawiał. Po zakończeniu wystawię wersję finalną wraz ze wszystkimi kodami źródłowymi.

Samsung F2380M, wrażenia

Michał ‘mina86’ Nazarewicz | 2 lutego 2010

Jakiś czas temu wszedłem w posiadanie monitora Samsung F2380M (te 23 w nazwie, jak można się domyślić, dziwnie koreluje z przekątną wyrażoną w calach) i pomyślałem, że podzielę się wrażeniami, bo jest czym.

Otóż mówiąc krótko, tego monitora nie polecam. W zasadzi sparzyłem się na tym, że kupiłem go opierając się na recenzjach w Internecie (nauczka na przyszłość — nie kupować monitorów, których nie widziało się w akcji) z których wynikało co najwyżej, że doświadczony gracz może zauważyć smużenie.