mlock() is working?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi guys,

I'm trying to lock some piece of the code in memory using mlock(). I did a simple program to test it and to certify I using my own simple page fault notifier [0]. The program is below.

-- cut --

#include <stdio.h>
#include <sys/mman.h>

#define SIZE 10000

int mlock_all = 0;

int
f(void)
{
    int c[SIZE];
    int i;

    if (mlock_all) {
        if (!mlockall(MCL_CURRENT))
            fprintf(stderr, "mlockall'ed succefully\n");
        else
            perror("mlockall");
    }
    else {
        if (!mlock(&c[0], SIZE))
            fprintf(stderr, "mlock'ed succefully\n");
        else
            perror("mlock");
    }

    fprintf(stderr, "start: 0x%x, end: 0x%x\n", &c[0], &c[SIZE]);

    for (i = 0; i < SIZE; i++)
        c[i] = i;

}
int
main(int argc, char **argv)
{
    if (argv[1])
        mlock_all = 1;

    while(1) {
        f();
        sleep (15);
    }

    return 0;
}

-- cut --


So, if I use mlockall() I always obtained the desired result, i.e., I lock the 'c[SIZE]'. But when I switch to mlock() it never works and my page fault notifier prints all pages concerning 'c[SIZE]'. Am I missing something? Is it possible to lock the automatic variables?

My Linux is 2.6.22.2.

my regards

[0] http://lkml.org/lkml/2007/7/27/11
    http://lkml.org/lkml/2007/7/27/8

--
Tiago Vignatti
C3SL - Centro de Computação Científica e Software Livre
www.c3sl.ufpr.br
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux