Forráskód Böngészése

[POWERPC] Add rtas_service_present() helper

To test for the existence of an RTAS function, we typically do:

   foo_token = rtas_token("foo");
   if (foo_token == RTAS_UNKNOWN_SERVICE)
      return;

Add a rtas_service_present method, which provides a more conventional
boolean interface for testing the existence of an RTAS method.

Signed-off-by: Nathan Lynch <ntl@pobox.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Nathan Lynch 18 éve
szülő
commit
f2d6d2d8bb
2 módosított fájl, 7 hozzáadás és 0 törlés
  1. 6 0
      arch/powerpc/kernel/rtas.c
  2. 1 0
      include/asm-powerpc/rtas.h

+ 6 - 0
arch/powerpc/kernel/rtas.c

@@ -303,6 +303,12 @@ int rtas_token(const char *service)
 }
 }
 EXPORT_SYMBOL(rtas_token);
 EXPORT_SYMBOL(rtas_token);
 
 
+int rtas_service_present(const char *service)
+{
+	return rtas_token(service) != RTAS_UNKNOWN_SERVICE;
+}
+EXPORT_SYMBOL(rtas_service_present);
+
 #ifdef CONFIG_RTAS_ERROR_LOGGING
 #ifdef CONFIG_RTAS_ERROR_LOGGING
 /*
 /*
  * Return the firmware-specified size of the error log buffer
  * Return the firmware-specified size of the error log buffer

+ 1 - 0
include/asm-powerpc/rtas.h

@@ -159,6 +159,7 @@ extern struct rtas_t rtas;
 
 
 extern void enter_rtas(unsigned long);
 extern void enter_rtas(unsigned long);
 extern int rtas_token(const char *service);
 extern int rtas_token(const char *service);
+extern int rtas_service_present(const char *service);
 extern int rtas_call(int token, int, int, int *, ...);
 extern int rtas_call(int token, int, int, int *, ...);
 extern void rtas_restart(char *cmd);
 extern void rtas_restart(char *cmd);
 extern void rtas_power_off(void);
 extern void rtas_power_off(void);