Memory fault error
Martin Simmons
martin at lispworks.com
Mon Apr 30 12:39:47 UTC 2018
>>>>> On Fri, 27 Apr 2018 16:48:57 -0700, Elliott Johnson said:
>
> On 4/27/18 3:42 AM, Martin Simmons wrote:
> > I think that answer is "you are not supposed to do that" because there is no
> > documentation for the slots of sensors_chip_name.
> I'm not sure that I follow your point on the lack of "documentation for
> the slots of sensors_chip_name".
>
> I followed the definitions in the c header file linked to below. Here is
> the header info:
I meant the documentation in
https://github.com/groeck/lm-sensors/blob/master/lib/libsensors.3 (or man
libsensors).
C header files often contain internal details that you are not supposed to
use.
> In the case of the cffi code, I use (with-foreign-object ...) to
> allocate the struct, so to test, I added a statement to my test function
> to initialize the path to an empty string before calling the parse
> function (which shouldn't touch the path slot):
>
> > (defun test-sensors-parse-chip-name (string)
> > (with-foreign-object (name '(:struct sensors-chip-name))
> > (setf (foreign-slot-value name '(:struct sensors-chip-name) 'path) "")
> > (unless (= 0 (cffi-sensors-parse-chip-name string name))
> > (error "Failed to parse: ~A" string))
> > (with-foreign-slots ((prefix bus address path)
> > name
> > (:struct sensors-chip-name))
> > (format t "~%Prefix: '~A'" prefix)
> > (format t "~%Address: '~A'" address)
> > (format t "~%Path: '~A'" path))))
>
> When I execute this I get the following without error:
Yes, that will "work" but I still have doubts that this is the correct way to
use sensors_parse_chip_name. I think it is supposed to used as the "match"
argument to sensors_get_detected_chips.
It looks like the sensors_chip_name struct is used within the implementation
of the library itself, where is does make use of the path slot.
__Martin
More information about the cffi-devel
mailing list