From: Michael Tuexen <Michael.Tuexen@lurchi.franken.de>
Cc: guile-devel@gnu.org
Subject: Re: Initial SCTP support for the upcoming 1.6.5 release
Date: Fri, 20 Aug 2004 20:18:33 +0200 [thread overview]
Message-ID: <58846D32-F2D5-11D8-9904-000D932C78D8@lurchi.franken.de> (raw)
In-Reply-To: <87ekm67wis.fsf@trouble.defaultvalue.org>
Hi Rob,
I got the external library from Marius compiled and
wrote sctp.scm such that the net_sctp_init can
be called and the constants can be accessed.
But I have two functions defined, one of them is defined
by
SCM_DEFINE (net_sctp_recvmsg, "sctp-recvmsg!", 2, 2, 0,
(SCM sock, SCM str, SCM start, SCM end),
"Return data from the socket port @var{sock} and also\n"
"information about where the data was received from.\n"
"@var{sock} must already be bound to the address from which\n"
"data is to be received. @code{str}, is a string into which the\n"
"data will be written. The size of @var{str} limits the amount\n"
"of data which can be received: in the case of packet protocols,\n"
"if a packet larger than this limit is encountered then some\n"
"data will be irrevocably lost.\n\n"
"The value returned is a list containing:\n"
"- the number of bytes read from the socket\n"
"- an address object in the same form as returned by
@code{accept}\n"
"- the flags returned by the sctp_recvmsg call\n"
"- a list containing the SID, SSN, PPID, TSN and CUM_TSN\n"
"The @var{start} and @var{end} arguments specify a substring of\n"
"@var{str} to which the data should be written.\n\n"
"Note that the data is read directly from the socket file\n"
"descriptor: any unread buffered port data is ignored.")
#define FUNC_NAME s_net_sctp_recvmsg
{
int rv;
....
return scm_list_4 (SCM_MAKINUM (rv), address, SCM_MAKINUM (flg),
s_sinfo);
}
#undef FUNC_NAME
How can I access this function from scheme?
Another question:
I need
ipv6_net_to_num
scm_addr_vector
scm_fill_sockaddr
which are declared static in socket.c. Can they made available and not
be declared static? If not, I need to define them again, which is not
very elegant.
And the last question:
Could the setsockopt and getsockopt functions be extended such that
they support an arbitrary length opt_value? This is the way they are
defined in C. What should the scheme type for the opt_value? A string?
Thank you very much for your help.
Best regards
Michael
On Aug 16, 2004, at 8:44 PM, Rob Browning wrote:
> Michael Tuexen <Michael.Tuexen@lurchi.franken.de> writes:
>
>> I'm trying to build the SCTP support as a loadable module.
>>
>> Is there any documentation available (or an example) where
>> I can figure out how I can solve the questions described
>> below.
>>
>> I looked in the guile sources, but only found modules defined
>> in scheme...
>
> In general, C-only modules are deprecated. The recommendation is that
> you create a small .scm file for your module, and then have that load
> your shared library and export your symbols, i.e.:
>
> (define-module (pcre))
> ;; exports at end of file.
>
> (let ((lib "libguile-pcre-v-1")
> (init-func "libguile_pcre_init"))
> (if (string=? (substring (version) 0 3) "1.4")
> (dynamic-call init-func (dynamic-link lib))
> (load-extension lib init-func)))
>
> ;; make any scheme side defines you that want to here.
>
> ;; export things here (though you could also do this above, or in
> ;; the define-module statement)
>
> ;; these exports will often be symbols that were defined during your
> ;; _init function above
>
> (export PCRE_MAJOR)
> (export PCRE_MINOR)
> ...
>
> Now, presuming that your .scm file is in the %load-path (via
> GUILE_LOAD_PATH, or whatever), and your shared library is in the
> LD_LIBRARY_PATH (or default ld.so locations), then (use-modules
> (pcre)) should work just fine.
>
> --
> Rob Browning
> rlb @defaultvalue.org and @debian.org; previously @cs.utexas.edu
> GPG starting 2002-11-03 = 14DD 432F AE39 534D B592 F9A0 25C8 D377
> 8C7E 73A4
>
_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel
next prev parent reply other threads:[~2004-08-20 18:18 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-08-10 18:26 Initial SCTP support for the upcoming 1.6.5 release Michael Tuexen
2004-08-11 12:29 ` Michael Tuexen
2004-08-13 13:40 ` Marius Vollmer
2004-08-13 20:27 ` Michael Tuexen
2004-08-24 14:15 ` Marius Vollmer
2004-08-24 17:35 ` Michael Tuexen
2004-09-08 15:03 ` Marius Vollmer
2004-09-08 15:34 ` Michael Tuexen
2004-08-14 9:59 ` Michael Tuexen
2004-08-16 0:40 ` Kevin Ryde
2004-08-16 10:42 ` Michael Tuexen
2004-08-17 23:46 ` Kevin Ryde
2004-08-19 18:34 ` Michael Tuexen
2004-08-20 1:13 ` Kevin Ryde
2004-08-20 7:57 ` Michael Tuexen
2004-08-16 17:02 ` Michael Tuexen
2004-08-16 18:44 ` Rob Browning
2004-08-20 18:18 ` Michael Tuexen [this message]
2004-08-23 0:58 ` Kevin Ryde
2004-08-23 19:54 ` Michael Tuexen
2004-08-24 0:57 ` Kevin Ryde
2004-08-24 11:27 ` Michael Tuexen
2004-08-24 12:46 ` Michael Tuexen
2004-08-24 14:24 ` Marius Vollmer
2004-08-24 18:22 ` Michael Tuexen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=58846D32-F2D5-11D8-9904-000D932C78D8@lurchi.franken.de \
--to=michael.tuexen@lurchi.franken.de \
--cc=guile-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).