CMUCL alien function parameters

From: Artem Baguinski (artm_at_v2.nl)
Date: 02/26/04


Date: Thu, 26 Feb 2004 16:38:04 +0100


hi

how come the follwing:

(alien-funcall
 (extern-alien
  "wrap_read_packet"
  (function
   av-error
   (* t)
   (* t)))
 nil nil)

works and

the following:

(alien-funcall
 (extern-alien
  "wrap_read_packet"
  (function
   av-error
   (* t)
   (* (struct packet)))) ;; <-- the only difference
 nil nil)

acts like it's entering some evil endless recursion:

; Compiling LAMBDA (#:G1031 #:G1032 #:G1033):
; [GC threshold exceeded with 12,015,528 bytes in use. Commencing GC.]
; [GC completed with 6,225,856 bytes retained and 5,789,672 bytes freed.]
; [GC will next occur when at least 18,225,856 bytes are in use.]
; [GC threshold exceeded with 18,234,240 bytes in use. Commencing GC.]
; [GC completed with 18,234,248 bytes retained and -8 bytes freed.]
; [GC will next occur when at least 30,234,248 bytes are in use.]
; [GC threshold exceeded with 30,243,712 bytes in use. Commencing GC.]
; [GC completed with 30,245,640 bytes retained and -1,928 bytes freed.]
; [GC will next occur when at least 42,245,640 bytes are in use.]
; [GC threshold exceeded with 42,255,104 bytes in use. Commencing GC.]
; [GC completed with 42,255,112 bytes retained and -8 bytes freed.]
; [GC will next occur when at least 54,255,112 bytes are in use.]

and dies somewhere here.

the struct packet is:

(def-alien-type av-packet
  (struct packet
          (:pts (integer 64))
          (:data (* unsigned-char))
          (:size int)
          (:stream-index int)
          (:flags int)
          (:duration int)
          (:destruct (* (function void (* (struct packet)))))
          (:priv (* t))))

thanks

-- 
gr{oe|ee}t{en|ings}
artm