• mina86.com

  • Categories
  • Code
  • Contact
  • Deep Dive into Contiguous Memory Allocator

    Posted by Michał ‘mina86’ Nazarewicz on 10th of June 2012 | (cite)

    This is an extended version of an LWN article on CMA. It contains more detail on how to use CMA and a lot of boring code samples.

    Contiguous Memory Allocator (or CMA) has been developed to allow large 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 large memory chunks without a need to grab memory for exclusive use.

    Simple in principle, it grew to be a quite complicated system which requires cooperation 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

    Posted by Michał ‘mina86’ Nazarewicz on 27th of March 2011 | (cite)

    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:

    Prime numbers less than 100

    Posted by Michał ‘mina86’ Nazarewicz on 12th of December 2010 | (cite)

    Anyone working in a major company 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; not that I can see how that would help).

    By the way, if you’re interested in how this challenge looks solved in Rust, I’ve described that as well.

    0 is ambiguous

    Posted by Michał ‘mina86’ Nazarewicz on 24th of October 2010 | (cite)

    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++.

    NTP over HTTP

    Posted by Michał ‘mina86’ Nazarewicz on 16th of January 2010 | (cite)

    Sitting in a dark office, after swearing for hours at ATI video cards I noticed time on my computer was incorrect. ‘No problem,’ I thought as I started typing ntpdate. That’s where it struck me that our beloved IT department had blocked most of the Internet. Checking the time on a watch or a mobile phone was not an option — I had neither — nor was looking at GKrellM on another PC — that’s lame.

    ‘I wish there was a NTP-over-HTTP protocol’ I sighed. And then I realised there was…

    Treasure Hunt w Prologu

    Posted by Michał ‘mina86’ Nazarewicz on 17th of January 2009 | (cite)

    W poprzednim wpisie pisałem o Google Treasure Hunt, a w szczególności o zadaniu czwartym. Teraz, w ramach przygotowań do kolokwióm z języka Prolog postanowiłem napisać w nim rozwiązanie postawionego problemu:

    Treasure Hunt a szybkość D

    Posted by Michał ‘mina86’ Nazarewicz on 10th of January 2009 | (cite)

    Zachęcony wpisem GiMa postanowiłem pobawić się w Google Treasure Hunt. Z początku moje wrażenia były negatywne, ale to dlatego, że zacząłem od zadania sieci, które jest co najmniej denne. Archiwum też nie napawało optymizmem, już zacząłem się zastanawiać, czy wszystkie będą tak prymitywne — na szczęście nie były.

    Masowe wysyłanie listów

    Posted by Michał ‘mina86’ Nazarewicz on 3rd of July 2008 | (cite)

    W tekście poniższym opiszę jak i dlaczego właśnie tak należy wysyłać masowe listy (tj. do wielu osób jednocześnie). Dość często zdarza mi się otrzymywać wiadomości z przerośniętą listą adresatów, z których połowy nawet nie znam — jest to zdecydowanie niedobry sposób na rozsyłanie korespondencji!

    Sieci Komputerowe

    Posted by Michał ‘mina86’ Nazarewicz on 16th of June 2008 | (cite)

    Ponownie coś z serii „ja juz zaliczyłem na 5,0, a może komuś się przyda”. Odpowiedzi na pytania przygotowawcze przed kolokwium z przedmiotu Sieci komputerowe II. Jak w przypadku poprzedneigo wpisu, plik ten największą wartość ma dla studentów Elektroniki Politechniki Warszawskiej, ale może też ktoś inny będzie miał ochotę przejrzeć.

    Systemy Operacyjne

    Posted by Michał ‘mina86’ Nazarewicz on 16th of June 2008 | (cite)

    Coś z serii „ja już zaliczyłem na pięć, a może komuś się przyda”, czyli przygotowany przeze mnie plik z odpowiedziami na pytania przygotowawcze do egzaminu z przedmiotu Systemy operacyjne. Zapewne największa wartość mają one dla studentów Elektroniki Politechniki Warszawskiej, niemniej jednak może ktoś się tym zainteresuje.