EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: error calling dbGetLinkValue in EPICS base-3.15.6
From: "Johnson, Andrew N. via Tech-talk" <tech-talk at aps.anl.gov>
To: "Rivers, Mark L." <rivers at cars.uchicago.edu>
Cc: Anindya Roy <r_ani at vecc.gov.in>, EPICS tech-talk <tech-talk at aps.anl.gov>
Date: Thu, 19 Mar 2020 16:19:02 +0000
On Mar 19, 2020, at 7:49 AM, Mark Rivers via Tech-talk <tech-talk at aps.anl.gov> wrote:

> However, dbGetLinkValue does not exist in any .h or .c file.  So the documentation does not match the actual API.

… which is why we’re trying to move the source of the documentation closer to the code by adopting Doxygen. It will probably take several years to get there though.

> Surprisingly to me this change in the API is also not mentioned in the 3.15.* release notes.

Mea cupla. There were quite a lot of changes when I was working on adding extensible link types and they didn’t all get documented.

> Two of the error messages in dbGetLink in dbLink.c still say the function name is dbGetLinkValue, which is incorrect.
> ./src/ioc/db/dbLink.c:        printf("dbGetLinkValue: Use of poptions no longer supported\n");
> ./src/ioc/db/dbLink.c:        cantProceed("dbGetLinkValue: Illegal link type %d\n", plink->type);

Those have been fixed in the 7.0 tree, probably sometime in 3.16 branch.

> However, I think the intent all along was that you should get dbGetLink(), not dbGetLinkValue().  Previous dbGetLink was a macro that called dbGetLinkValue().  Now dbGetLink is no longer a macro, it is the C function that you should call.

Correct. dbGetLink() was a macro that only actually called the dbGetLinkValue() routine if there was something for it to do; passing *nRequest==0 allowed you to fetch metadata such as an array length without getting the actual data. Since everyone was supposed to be using dbGetLink() I removed the short-circuit and renamed the routine while cleaning up the code.

- Andrew

-- 
Complexity comes for free, simplicity you have to work for.


References:
error calling dbGetLinkValue in EPICS base-3.15.6 Anindya Roy via Tech-talk
Re: error calling dbGetLinkValue in EPICS base-3.15.6 Mark Rivers via Tech-talk

Navigate by Date:
Prev: Re: monitors on array variables Michael Davidsaver via Tech-talk
Next: Re: monitors on array variables D. Peter Siddons via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
Navigate by Thread:
Prev: Re: error calling dbGetLinkValue in EPICS base-3.15.6 Mark Rivers via Tech-talk
Next: Re: error calling dbGetLinkValue in EPICS base-3.15.6 Anindya Roy via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
ANJ, 19 Mar 2020 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·