[so] tema 5
Octavian Purdila
so@atlantis.cs.pub.ro
Fri, 30 Jan 2004 11:03:20 +0200
------------3Mn5kEBfQICbBT18GkwWN9
Content-Type: text/plain; format=flowed; delsp=yes; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Buna dimineata,
Pentru neclaritati legate de corectarea temei 5 va rog sa-mi dati mail
(tavi@cs.pub.ro). Programul de test
cu care a fost testata tema e atasat.
tavi
------------3Mn5kEBfQICbBT18GkwWN9
Content-Disposition: attachment; filename=t.c
Content-Type: text/x-c; name=t.c
Content-Transfer-Encoding: 8bit
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
void* (*vinit)(int virt_pages, int phys_pages, int algorithm);
int main(int argc, char **argv)
{
int virt, phys, alg;
int *m, i;
const char *lib;
void *libh;
if (argc != 5) {
printf("usage: t virt phys alg lib\n");
return -1;
}
virt=atoi(argv[1]); phys=atoi(argv[2]); alg=atoi(argv[3]); lib=argv[4];
if (!(libh=dlopen(lib, RTLD_LAZY))) {
printf("can't dlopen '%s':%s\n", lib, dlerror());
return -1;
}
if (!(vinit=dlsym(libh, "vinit"))) {
printf("can't dlsym\n");
return -1;
}
if (!(m=vinit(virt, phys, alg))) {
printf("can't vinit\n");
return -1;
}
for(i=0; i<virt*4096/4; i++)
if (m[i]!=0)
printf("bug: m[%d] not zero\n", i);
for(i=0; i<virt*4096/4; i++)
m[i]=i;
for(i=0; i<virt*4096/4; i++) {
if (m[i] != i)
printf("bug: m[%d] != %d\n", i, i);
}
return 0;
}
------------3Mn5kEBfQICbBT18GkwWN9--