Hi,

I was wondering what people's thoughts were on API return types. In particular there is this and other examples in include/clk-uclass.h

/**
 * get_rate() - Get current clock rate.
 * @clk:        The clock to query.
 *
 * This returns the current rate of a clock. If the clock is disabled, it
 * returns the rate at which the clock would run if it was enabled. The
 * following pseudo-code should hold::
 *
 *   disable(clk)
 *   rate = get_rate(clk)
 *   enable(clk)
 *   assert(get_rate(clk) == rate)
 *
 * Return:
 * * The rate of @clk
 * * -%ENOSYS if this function is not implemented for @clk
* * -%ENOENT if @clk->id is invalid. Prefer using an assert instead, and doing
 *   this check in request().
* * Another negative error value (such as %EIO or %ECOMM) if the rate could
 *   not be determined due to a bus error.
 */
ulong get_rate(struct clk *clk);


get_rate is declared as returning a ulong but the description says that it can return negative errors. A simple test of the return value for being less than 0 will always fail so errors can go undetected. Casting to a signed type seems less than ideal.

What is the best way to deal with this? Cast to a signed or update the API to be signed or...?

Andrew

Reply via email to