/* We could just take the "tracedata" index into the .tracedata section instead. Generating a hash of the data gives us a chance to work across kernel versions, and perhaps more importantly it also gives us valid/invalid check (ie we will likely not give totally bogus reports - if the hash matches, it's not any guarantee, but it's a high  */
void generate_resume_trace(const void *tracedata, unsigned int user)
/* We could just take the "tracedata" index into the .tracedata section instead. Generating a hash of the data gives us a chance to work across kernel versions, and perhaps more importantly it also gives us valid/invalid check (ie we will likely not give totally bogus reports - if the hash matches, it's not any guarantee, but it's a high  */
void generate_resume_trace(const void *tracedata, unsigned int user)
{
	unsigned short lineno = *(unsigned short *)tracedata;
	const char *file = *(const char **)(tracedata + 2);
	unsigned int user_hash_value, file_hash_value;
	user_hash_value = user % USERHASH;
	file_hash_value = hash_string(lineno, file, FILEHASH);
	set_magic_time(user_hash_value, file_hash_value, dev_hash_value);
}