patch-2.2.14 linux/net/sunrpc/svc.c
Next file: linux/net/sunrpc/svcsock.c
Previous file: linux/net/sunrpc/clnt.c
Back to the patch index
Back to the overall index
- Lines: 32
- Date:
Tue Jan 4 10:12:27 2000
- Orig file:
v2.2.13/linux/net/sunrpc/svc.c
- Orig date:
Tue Jan 4 11:10:43 2000
diff -u --recursive --new-file v2.2.13/linux/net/sunrpc/svc.c linux/net/sunrpc/svc.c
@@ -38,7 +38,7 @@
memset(serv, 0, sizeof(*serv));
serv->sv_program = prog;
- serv->sv_nrthreads = 1;
+ atomic_set(&serv->sv_nrthreads, 1);
serv->sv_stats = prog->pg_stats;
serv->sv_bufsz = bufsize? bufsize : 4096;
serv->sv_xdrsize = xdrsize;
@@ -61,10 +61,10 @@
dprintk("RPC: svc_destroy(%s, %d)\n",
serv->sv_program->pg_name,
- serv->sv_nrthreads);
+ atomic_read (&serv->sv_nrthreads));
- if (serv->sv_nrthreads) {
- if (--(serv->sv_nrthreads) != 0)
+ if (atomic_read (&serv->sv_nrthreads)) {
+ if (!atomic_dec_and_test (&serv->sv_nrthreads))
return;
} else
printk("svc_destroy: no threads for serv=%p!\n", serv);
@@ -128,7 +128,7 @@
|| !svc_init_buffer(&rqstp->rq_defbuf, serv->sv_bufsz))
goto out_thread;
- serv->sv_nrthreads++;
+ atomic_inc(&serv->sv_nrthreads);
rqstp->rq_server = serv;
error = kernel_thread((int (*)(void *)) func, rqstp, 0);
if (error < 0)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)