xref: /aosp_15_r20/external/gsc-utils/util/misc_util.h (revision 4f2df630800bdcf1d4f0decf95d8a1cb87344f5f)
1*4f2df630SAndroid Build Coastguard Worker /* Copyright 2013 The ChromiumOS Authors
2*4f2df630SAndroid Build Coastguard Worker  * Use of this source code is governed by a BSD-style license that can be
3*4f2df630SAndroid Build Coastguard Worker  * found in the LICENSE file.
4*4f2df630SAndroid Build Coastguard Worker  */
5*4f2df630SAndroid Build Coastguard Worker 
6*4f2df630SAndroid Build Coastguard Worker #ifndef __UTIL_MISC_UTIL_H
7*4f2df630SAndroid Build Coastguard Worker #define __UTIL_MISC_UTIL_H
8*4f2df630SAndroid Build Coastguard Worker 
9*4f2df630SAndroid Build Coastguard Worker /* Don't use a macro where an inline will do... */
MIN(int a,int b)10*4f2df630SAndroid Build Coastguard Worker static inline int MIN(int a, int b)
11*4f2df630SAndroid Build Coastguard Worker {
12*4f2df630SAndroid Build Coastguard Worker 	return a < b ? a : b;
13*4f2df630SAndroid Build Coastguard Worker }
MAX(int a,int b)14*4f2df630SAndroid Build Coastguard Worker static inline int MAX(int a, int b)
15*4f2df630SAndroid Build Coastguard Worker {
16*4f2df630SAndroid Build Coastguard Worker 	return a > b ? a : b;
17*4f2df630SAndroid Build Coastguard Worker }
18*4f2df630SAndroid Build Coastguard Worker 
19*4f2df630SAndroid Build Coastguard Worker /**
20*4f2df630SAndroid Build Coastguard Worker  * Write a buffer to the file.
21*4f2df630SAndroid Build Coastguard Worker  *
22*4f2df630SAndroid Build Coastguard Worker  * @param filename	Target filename
23*4f2df630SAndroid Build Coastguard Worker  * @param buf		Buffer to write
24*4f2df630SAndroid Build Coastguard Worker  * @param size		Size of buffer in bytes
25*4f2df630SAndroid Build Coastguard Worker  * @return non-zero if error
26*4f2df630SAndroid Build Coastguard Worker  */
27*4f2df630SAndroid Build Coastguard Worker int write_file(const char *filename, const char *buf, int size);
28*4f2df630SAndroid Build Coastguard Worker 
29*4f2df630SAndroid Build Coastguard Worker /**
30*4f2df630SAndroid Build Coastguard Worker  * Read a file into a newly-allocated buffer.
31*4f2df630SAndroid Build Coastguard Worker  *
32*4f2df630SAndroid Build Coastguard Worker  * @param filename	Source filename
33*4f2df630SAndroid Build Coastguard Worker  * @param size		Size of data in bytes will be stored here on success.
34*4f2df630SAndroid Build Coastguard Worker  * @return A newly allocated buffer with the data, which must be freed with
35*4f2df630SAndroid Build Coastguard Worker  *         free() by the caller, or NULL if error.
36*4f2df630SAndroid Build Coastguard Worker  */
37*4f2df630SAndroid Build Coastguard Worker char *read_file(const char *filename, int *size);
38*4f2df630SAndroid Build Coastguard Worker 
39*4f2df630SAndroid Build Coastguard Worker /**
40*4f2df630SAndroid Build Coastguard Worker  * Check if a string contains only printable characters.
41*4f2df630SAndroid Build Coastguard Worker  *
42*4f2df630SAndroid Build Coastguard Worker  * @param buf		Null-terminated string to check
43*4f2df630SAndroid Build Coastguard Worker  * @return non-zero if buf contains only printable characters; zero if not.
44*4f2df630SAndroid Build Coastguard Worker  */
45*4f2df630SAndroid Build Coastguard Worker int is_string_printable(const char *buf);
46*4f2df630SAndroid Build Coastguard Worker 
47*4f2df630SAndroid Build Coastguard Worker /**
48*4f2df630SAndroid Build Coastguard Worker  * Get the versions of the command supported by the EC.
49*4f2df630SAndroid Build Coastguard Worker  *
50*4f2df630SAndroid Build Coastguard Worker  * @param cmd		Command
51*4f2df630SAndroid Build Coastguard Worker  * @param pmask		Destination for version mask; will be set to 0 on
52*4f2df630SAndroid Build Coastguard Worker  *			error.
53*4f2df630SAndroid Build Coastguard Worker  * @return 0 if success, <0 if error
54*4f2df630SAndroid Build Coastguard Worker  */
55*4f2df630SAndroid Build Coastguard Worker int ec_get_cmd_versions(int cmd, uint32_t *pmask);
56*4f2df630SAndroid Build Coastguard Worker 
57*4f2df630SAndroid Build Coastguard Worker /**
58*4f2df630SAndroid Build Coastguard Worker  * Return non-zero if the EC supports the command and version
59*4f2df630SAndroid Build Coastguard Worker  *
60*4f2df630SAndroid Build Coastguard Worker  * @param cmd		Command to check
61*4f2df630SAndroid Build Coastguard Worker  * @param ver		Version to check
62*4f2df630SAndroid Build Coastguard Worker  * @return non-zero if command version supported; 0 if not.
63*4f2df630SAndroid Build Coastguard Worker  */
64*4f2df630SAndroid Build Coastguard Worker int ec_cmd_version_supported(int cmd, int ver);
65*4f2df630SAndroid Build Coastguard Worker 
66*4f2df630SAndroid Build Coastguard Worker /**
67*4f2df630SAndroid Build Coastguard Worker  * Return 1 is the current kernel version is greater or equal to
68*4f2df630SAndroid Build Coastguard Worker  * <major>.<minor>.<sublevel>
69*4f2df630SAndroid Build Coastguard Worker  */
70*4f2df630SAndroid Build Coastguard Worker int kernel_version_ge(int major, int minor, int sublevel);
71*4f2df630SAndroid Build Coastguard Worker #endif
72