diff options
author | n <@> | 2024-01-08 17:52:02 +0200 |
---|---|---|
committer | n <@> | 2024-01-08 17:52:02 +0200 |
commit | bed82f443d340fffb687205b81fbe5fd1beb8336 (patch) | |
tree | 964179b2a0f3fb94d388e15a12656df313ad1946 | |
parent | c5a6e99248ec0bb68225d1180375fe389975fa56 (diff) |
32
-rw-r--r-- | m.c | 9 | ||||
-rw-r--r-- | makefile | 8 |
2 files changed, 11 insertions, 6 deletions
@@ -5,15 +5,20 @@ #ifndef MAP_NORESERVE #define MAP_NORESERVE 0 #endif +#if __i386__ + #define AP(p) ((A)(U)(p)) //type A from pointer +#else + #define AP(p) ((A)(p)) +#endif Z ST{V*p;W n;B f;}reg[128];Z U nreg;Z UC pnd[128];Z U npnd; Z V mc(){P(!npnd)F(npnd,U j=pnd[i];munmap(reg[j].p,reg[j].n);reg[j].p=0)npnd=0;U j=0;F(nreg,I(reg[i].p,MC(reg+j,reg+i,SZ*reg);j++))nreg=j;} Z A mu(V*p)_(F(nreg,P(reg[i].p==p,pnd[npnd++]=i;0))die("UNMAP")) Z V*mm(W n,U f)_(V*p=mmap(0,n,PROT_READ|PROT_WRITE,MAP_NORESERVE|MAP_PRIVATE|MAP_ANON,-1,0);P((L)p==(C)p,(V*)0)I(nreg==L(reg),mc();I(nreg==L(reg),die("MMAP")))reg[nreg++]=(TY(*reg)){p,n,f};p) -A mf(U f,U i,U n)_(V*p=mm(pg+n,1);P(!p,eo0())P(mmap(p+pg,n,PROT_READ|PROT_WRITE,MAP_NORESERVE|MAP_PRIVATE|MAP_FIXED,f,i)!=p+pg,mu(p);eo0())A x=(A)p+pg;xb=0;xr=REFB;xT=tC;xn=n;x) +A mf(U f,U i,U n)_(V*p=mm(pg+n,1);P(!p,eo0())P(mmap(p+pg,n,PROT_READ|PROT_WRITE,MAP_NORESERVE|MAP_PRIVATE|MAP_FIXED,f,i)!=p+pg,mu(p);eo0())A x=AP(p+pg);xb=0;xr=REFB;xT=tC;xn=n;x) Z A bkt[24];DBG(Z U lck;) Z W cap(A x/*0*/)_((HD<<xb)-HD) -Z A mb(U i)_(P(i>=L(bkt),V*p=mm(HD<<i,0);P(!p,die("OOM"))HD+(A)p)A x=bkt[i];P(x,bkt[i]=xX;DBG(xX=0);x)x=mb(i+1);A y=x+(HD<<i);MS(yV-HD,0,HD);yb=i;yX=bkt[i];bkt[i]=y;x) +Z A mb(U i)_(P(i>=L(bkt),V*p=mm(HD<<i,0);P(!p,die("OOM"))AP(p+HD))A x=bkt[i];P(x,bkt[i]=xX;DBG(xX=0);x)x=mb(i+1);A y=x+(HD<<i);MS(yV-HD,0,HD);yb=i;yX=bkt[i];bkt[i]=y;x) A1(m0,DBG(lck++;)Q(x)XP(0)P(xr>REFB,xr--;0)I(TR(xT),mrn(xn|!xn,xA);xT=tL)U i=xb;P(!i,mu(xV-pg))P(i>=L(bkt),mu(xV-HD))xX=bkt[i];bkt[i]=x;xr=0;x) DBG(A1(m1,lck--;P(!x||!xb,0)MS(xV,0xab,cap(x));xn=-1;xT=0;0)) A1(_R,Q(x)XP(x)xr++;x) @@ -27,10 +27,10 @@ o/w/x/%.k:w/x/%.k;$M;ln -f $< $@ o/w/index.html:w/index.html k w/inl.k w/*.js;$M;cd w && ./inl.k index.html *.js >../$@ && cd - o/w/http:w/http.c;$(CC) $< -o $@ -# #nyi -# O_32=@opts -m32 -# o/32/%.o:%.c *.h;$M;$(CC) $(O_32) -o $@ -c $< -# k32:$(patsubst %.c,o/32/%.o,$(wildcard *.c));$(CC) $(O_32) -o $@ $^ -lgcc -lm -ldl +#nyi +O_32=@opts -m32 +o/32/%.o:%.c *.h;$M;$(CC) $(O_32) -o $@ -c $< +k32:$(patsubst %.c,o/32/%.o,$(wildcard *.c));$(CC) $(O_32) -o $@ $^ -lgcc -lm -ldl o/t:t/t.c;$(CC) $< -o $@ -Wall -Wno-unused-result -Werror |