From: <cli...@li...> - 2009-08-01 12:04:03
|
Send clisp-cvs mailing list submissions to cli...@li... To subscribe or unsubscribe via the World Wide Web, visit https://lists.sourceforge.net/lists/listinfo/clisp-cvs or, via email, send a message with subject or body 'help' to cli...@li... You can reach the person managing the list at cli...@li... When replying, please edit your Subject line so it is more specific than "Re: Contents of clisp-cvs digest..." CLISP CVS commits for today Today's Topics: 1. clisp/modules/rawsock rawsock.c,1.120,1.121 (Sam Steingold) 2. clisp/src ChangeLog,1.6996,1.6997 lispbibl.d,1.882,1.883 (Sam Steingold) ---------------------------------------------------------------------- Message: 1 Date: Fri, 31 Jul 2009 15:27:57 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/modules/rawsock rawsock.c,1.120,1.121 To: cli...@li... Message-ID: <E1M...@dd...> Update of /cvsroot/clisp/clisp/modules/rawsock In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv5497/modules/rawsock Modified Files: rawsock.c Log Message: * lispbibl.d (with_pinned_varobject): add & export * modules/rawsock/rawsock.c (with_buffer_arg, with_sockaddr_arg): use it Index: rawsock.c =================================================================== RCS file: /cvsroot/clisp/clisp/modules/rawsock/rawsock.c,v retrieving revision 1.120 retrieving revision 1.121 diff -u -d -r1.120 -r1.121 --- rawsock.c 31 Jul 2009 09:27:58 -0000 1.120 +++ rawsock.c 31 Jul 2009 15:27:55 -0000 1.121 @@ -116,9 +116,7 @@ } #define with_buffer_arg(_buffer,_arg_,_size,_prot,_code) do { \ void *_buffer = parse_buffer_arg(_arg_,_size,_prot); \ - pin_varobject(*_arg_); \ - _code; \ - unpin_varobject(*_arg_); \ + with_pinned_varobject(*_arg_,_code); \ } while(0) /* DANGER: the return value is invalidated by GC! only used by with_sockaddr_arg @@ -141,10 +139,7 @@ struct sockaddr* _ptr = \ (struct sockaddr*)check_struct_data(`RAWSOCK::SOCKADDR`, \ _arg_,_size,_prot); \ - pinned_chain_t pc; \ - pin_varobject_with_pc(&pc,*_arg_); \ - _code; \ - unpin_varobject(pc.pc_varobject); \ + with_pinned_varobject(*_arg_,_code); \ } while(0) /* check that the arg is a vector of byte vectors @@ -1063,7 +1058,7 @@ if ((retval = check_iovec_arg(&STACK_2,&offset)) >= 0) { /* READV */ ssize_t pinned_count = retval; struct iovec *buffer = (struct iovec*)alloca(sizeof(struct iovec)*retval); - PIN_DECL; PIN_INIT(retval); + PIN_DECL; PIN_INIT(pinned_count); fill_iovec(STACK_0,offset,retval,buffer,PROT_READ_WRITE PIN_ARG_USE); SYSCALL(retval,sock,readv(sock,buffer,retval)); unpin_varobjects(pinned_count); @@ -1137,7 +1132,7 @@ if ((retval = check_iovec_arg(&STACK_2,&offset)) >= 0) { /* WRITEV */ ssize_t pinned_count = retval; struct iovec *buffer = (struct iovec*)alloca(sizeof(struct iovec)*retval); - PIN_DECL; PIN_INIT(retval); + PIN_DECL; PIN_INIT(pinned_count); fill_iovec(STACK_0,offset,retval,buffer,PROT_READ PIN_ARG_USE); SYSCALL(retval,sock,writev(sock,buffer,retval)); unpin_varobjects(pinned_count); ------------------------------ Message: 2 Date: Fri, 31 Jul 2009 15:27:58 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/src ChangeLog,1.6996,1.6997 lispbibl.d,1.882,1.883 To: cli...@li... Message-ID: <E1M...@dd...> Update of /cvsroot/clisp/clisp/src In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv5497/src Modified Files: ChangeLog lispbibl.d Log Message: * lispbibl.d (with_pinned_varobject): add & export * modules/rawsock/rawsock.c (with_buffer_arg, with_sockaddr_arg): use it Index: lispbibl.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/lispbibl.d,v retrieving revision 1.882 retrieving revision 1.883 diff -u -d -r1.882 -r1.883 --- lispbibl.d 24 Jul 2009 20:20:26 -0000 1.882 +++ lispbibl.d 31 Jul 2009 15:27:56 -0000 1.883 @@ -17559,13 +17559,20 @@ pin_varobject_with_pc(&GENTAG(pc), varobj) /* UP: unpin varobject in lisp heap. */ - #define unpin_varobject(varobj) \ - do { \ + #define unpin_varobject(varobj) do { \ var pinned_chain_t **p=&(current_thread()->_pinned); \ ASSERT_VALID_UNPIN(p,varobj); \ *p = (*p)->pc_next; \ } while(0) + /* Macro: pin varobj, execute code, unpin it */ + #define with_pinned_varobject(varobj,code) do { \ + var pinned_chain_t GENTAG(pc); \ + pin_varobject_with_pc(&GENTAG(pc), varobj); \ + code; \ + unpin_varobject(GENTAG(pc).pc_varobject); \ + } while(0) + /* UP: unpins specified number of pinned objects. will abort if there are less pinned objects than asked (SEGFAULT). > count: how many object to remove from the pinned chain */ @@ -17638,6 +17645,7 @@ #define pin_varobject(vo) #define unprotect_heap_range(vo,access) #define unpin_varobject(vo) + #define with_pinned_varobject(vo,code) code #define unpin_varobjects(count) #define GC_STOP_WORLD(lock_heap) #define GC_RESUME_WORLD(unlock_heap) @@ -17660,6 +17668,7 @@ %% export_def(pin_varobject_with_pc(pc,vo)); %% export_def(pin_varobject(vo)); %% export_def(unpin_varobject(vo)); +%% export_def(with_pinned_varobject(vo,code)); %% export_def(unpin_varobjects(count)); %% export_def(WITH_OS_MUTEX_LOCK(stack_count,mutex,body)); %% export_def(WITH_LISP_MUTEX_LOCK(stack_count,keep_mv_space,pmutex,body)); Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.6996 retrieving revision 1.6997 diff -u -d -r1.6996 -r1.6997 --- ChangeLog 31 Jul 2009 09:27:58 -0000 1.6996 +++ ChangeLog 31 Jul 2009 15:27:55 -0000 1.6997 @@ -1,3 +1,8 @@ +2009-07-31 Sam Steingold <sd...@gn...> + + * lispbibl.d (with_pinned_varobject): add & export + * modules/rawsock/rawsock.c (with_buffer_arg, with_sockaddr_arg): use it + 2009-07-31 Vladimir Tzankov <vtz...@gm...> RAWSOCK: fix object unpinning ------------------------------ ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ------------------------------ _______________________________________________ clisp-cvs mailing list cli...@li... https://lists.sourceforge.net/lists/listinfo/clisp-cvs End of clisp-cvs Digest, Vol 40, Issue 1 **************************************** |